]> git.proxmox.com Git - rustc.git/blob - src/libcore/benches/num/mod.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / src / libcore / benches / num / mod.rs
1 mod dec2flt;
2 mod flt2dec;
3
4 use std::str::FromStr;
5 use test::Bencher;
6
7 const ASCII_NUMBERS: [&str; 19] = [
8 "0",
9 "1",
10 "2",
11 "43",
12 "765",
13 "76567",
14 "987245987",
15 "-4aa32",
16 "1786235",
17 "8723095",
18 "f##5s",
19 "83638730",
20 "-2345",
21 "562aa43",
22 "-1",
23 "-0",
24 "abc",
25 "xyz",
26 "c0ffee",
27 ];
28
29 macro_rules! from_str_bench {
30 ($mac:ident, $t:ty) => {
31 #[bench]
32 fn $mac(b: &mut Bencher) {
33 b.iter(|| {
34 ASCII_NUMBERS
35 .iter()
36 .cycle()
37 .take(5_000)
38 .filter_map(|s| <$t>::from_str(s).ok())
39 .max()
40 })
41 }
42 };
43 }
44
45 macro_rules! from_str_radix_bench {
46 ($mac:ident, $t:ty, $radix:expr) => {
47 #[bench]
48 fn $mac(b: &mut Bencher) {
49 b.iter(|| {
50 ASCII_NUMBERS
51 .iter()
52 .cycle()
53 .take(5_000)
54 .filter_map(|s| <$t>::from_str_radix(s, $radix).ok())
55 .max()
56 })
57 }
58 };
59 }
60
61 from_str_bench!(bench_u8_from_str, u8);
62 from_str_radix_bench!(bench_u8_from_str_radix_2, u8, 2);
63 from_str_radix_bench!(bench_u8_from_str_radix_10, u8, 10);
64 from_str_radix_bench!(bench_u8_from_str_radix_16, u8, 16);
65 from_str_radix_bench!(bench_u8_from_str_radix_36, u8, 36);
66
67 from_str_bench!(bench_u16_from_str, u16);
68 from_str_radix_bench!(bench_u16_from_str_radix_2, u16, 2);
69 from_str_radix_bench!(bench_u16_from_str_radix_10, u16, 10);
70 from_str_radix_bench!(bench_u16_from_str_radix_16, u16, 16);
71 from_str_radix_bench!(bench_u16_from_str_radix_36, u16, 36);
72
73 from_str_bench!(bench_u32_from_str, u32);
74 from_str_radix_bench!(bench_u32_from_str_radix_2, u32, 2);
75 from_str_radix_bench!(bench_u32_from_str_radix_10, u32, 10);
76 from_str_radix_bench!(bench_u32_from_str_radix_16, u32, 16);
77 from_str_radix_bench!(bench_u32_from_str_radix_36, u32, 36);
78
79 from_str_bench!(bench_u64_from_str, u64);
80 from_str_radix_bench!(bench_u64_from_str_radix_2, u64, 2);
81 from_str_radix_bench!(bench_u64_from_str_radix_10, u64, 10);
82 from_str_radix_bench!(bench_u64_from_str_radix_16, u64, 16);
83 from_str_radix_bench!(bench_u64_from_str_radix_36, u64, 36);
84
85 from_str_bench!(bench_i8_from_str, i8);
86 from_str_radix_bench!(bench_i8_from_str_radix_2, i8, 2);
87 from_str_radix_bench!(bench_i8_from_str_radix_10, i8, 10);
88 from_str_radix_bench!(bench_i8_from_str_radix_16, i8, 16);
89 from_str_radix_bench!(bench_i8_from_str_radix_36, i8, 36);
90
91 from_str_bench!(bench_i16_from_str, i16);
92 from_str_radix_bench!(bench_i16_from_str_radix_2, i16, 2);
93 from_str_radix_bench!(bench_i16_from_str_radix_10, i16, 10);
94 from_str_radix_bench!(bench_i16_from_str_radix_16, i16, 16);
95 from_str_radix_bench!(bench_i16_from_str_radix_36, i16, 36);
96
97 from_str_bench!(bench_i32_from_str, i32);
98 from_str_radix_bench!(bench_i32_from_str_radix_2, i32, 2);
99 from_str_radix_bench!(bench_i32_from_str_radix_10, i32, 10);
100 from_str_radix_bench!(bench_i32_from_str_radix_16, i32, 16);
101 from_str_radix_bench!(bench_i32_from_str_radix_36, i32, 36);
102
103 from_str_bench!(bench_i64_from_str, i64);
104 from_str_radix_bench!(bench_i64_from_str_radix_2, i64, 2);
105 from_str_radix_bench!(bench_i64_from_str_radix_10, i64, 10);
106 from_str_radix_bench!(bench_i64_from_str_radix_16, i64, 16);
107 from_str_radix_bench!(bench_i64_from_str_radix_36, i64, 36);