#![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 test::{Bencher, black_box}; $( #[bench] fn $name(b: &mut Bencher) { use std::io::Write; 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(::max_value() as u64), bench_u64_max(::max_value()), bench_i16_0(0i16), bench_i16_min(::min_value()), bench_u128_0(0u128), bench_u128_max(::max_value()) }