1 #![feature(test)] 2 #![allow(non_snake_case)] 3 #![allow(clippy::cast_lossless)] 4 5 extern crate test; 6 7 macro_rules! benches { 8 ($($name:ident($value:expr))*) => { 9 mod bench_itoa_format { 10 use test::{Bencher, black_box}; 11 12 $( 13 #[bench] 14 fn $name(b: &mut Bencher) { 15 let mut buffer = itoa::Buffer::new(); 16 17 b.iter(|| { 18 let printed = buffer.format(black_box($value)); 19 black_box(printed); 20 }); 21 } 22 )* 23 } 24 25 mod bench_std_fmt { 26 use std::io::Write; 27 use test::{Bencher, black_box}; 28 29 $( 30 #[bench] 31 fn $name(b: &mut Bencher) { 32 let mut buf = Vec::with_capacity(40); 33 34 b.iter(|| { 35 buf.clear(); 36 write!(&mut buf, "{}", black_box($value)).unwrap(); 37 black_box(&buf); 38 }); 39 } 40 )* 41 } 42 } 43 } 44 45 benches! { 46 bench_u64_0(0u64) 47 bench_u64_half(u32::max_value() as u64) 48 bench_u64_max(u64::max_value()) 49 50 bench_i16_0(0i16) 51 bench_i16_min(i16::min_value()) 52 53 bench_u128_0(0u128) 54 bench_u128_max(u128::max_value()) 55 } 56