#![feature(test)] #![allow(non_snake_case)] #![allow(clippy::cast_lossless)] extern crate test; macro_rules! benches { ($($name:ident($value:expr))*) => { mod bench_itoa_format { use test::{Bencher, black_box}; $( #[bench] fn $name(b: &mut Bencher) { let mut buffer = itoa::Buffer::new(); b.iter(|| { let printed = buffer.format(black_box($value)); black_box(printed); }); } )* } mod bench_std_fmt { use std::io::Write; use test::{Bencher, black_box}; $( #[bench] fn $name(b: &mut Bencher) { let mut buf = Vec::with_capacity(40); b.iter(|| { buf.clear(); write!(&mut buf, "{}", black_box($value)).unwrap(); black_box(&buf); }); } )* } } } benches! { bench_u64_0(0u64) bench_u64_half(u32::max_value() as u64) bench_u64_max(u64::max_value()) bench_i16_0(0i16) bench_i16_min(i16::min_value()) bench_u128_0(0u128) bench_u128_max(u128::max_value()) }