#![cfg_attr(feature = "cargo-clippy", allow(cast_lossless))] #![feature(test)] #![allow(non_snake_case)] extern crate itoa; extern crate test; macro_rules! benches { ( $( $(#[$attr:meta])* $name:ident($value:expr) ),* ) => { mod bench_itoa_write { use test::{Bencher, black_box}; $( $(#[$attr])* #[bench] fn $name(b: &mut Bencher) { use itoa; let mut buf = Vec::with_capacity(40); b.iter(|| { buf.clear(); itoa::write(&mut buf, black_box($value)).unwrap() }); } )* } mod bench_itoa_fmt { use test::{Bencher, black_box}; $( $(#[$attr])* #[bench] fn $name(b: &mut Bencher) { use itoa; let mut buf = String::with_capacity(40); b.iter(|| { buf.clear(); itoa::fmt(&mut buf, black_box($value)).unwrap() }); } )* } mod bench_std_fmt { use test::{Bencher, black_box}; $( $(#[$attr])* #[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() }); } )* } } } 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()), #[cfg(feature = "i128")] bench_u128_0(0u128), #[cfg(feature = "i128")] bench_u128_max(::max_value()) }