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 | |