mod dec2flt; mod flt2dec; mod int_log; use std::str::FromStr; use test::{black_box, Bencher}; const ASCII_NUMBERS: [&str; 19] = [ "0", "1", "2", "43", "765", "76567", "987245987", "-4aa32", "1786235", "8723095", "f##5s", "83638730", "-2345", "562aa43", "-1", "-0", "abc", "xyz", "c0ffee", ]; macro_rules! from_str_bench { ($mac:ident, $t:ty) => { #[bench] fn $mac(b: &mut Bencher) { b.iter(|| { ASCII_NUMBERS .iter() .cycle() .take(5_000) .filter_map(|s| <$t>::from_str(black_box(s)).ok()) .max() }) } }; } macro_rules! from_str_radix_bench { ($mac:ident, $t:ty, $radix:expr) => { #[bench] fn $mac(b: &mut Bencher) { b.iter(|| { ASCII_NUMBERS .iter() .cycle() .take(5_000) .filter_map(|s| <$t>::from_str_radix(black_box(s), $radix).ok()) .max() }) } }; } from_str_bench!(bench_u8_from_str, u8); from_str_radix_bench!(bench_u8_from_str_radix_2, u8, 2); from_str_radix_bench!(bench_u8_from_str_radix_10, u8, 10); from_str_radix_bench!(bench_u8_from_str_radix_16, u8, 16); from_str_radix_bench!(bench_u8_from_str_radix_36, u8, 36); from_str_bench!(bench_u16_from_str, u16); from_str_radix_bench!(bench_u16_from_str_radix_2, u16, 2); from_str_radix_bench!(bench_u16_from_str_radix_10, u16, 10); from_str_radix_bench!(bench_u16_from_str_radix_16, u16, 16); from_str_radix_bench!(bench_u16_from_str_radix_36, u16, 36); from_str_bench!(bench_u32_from_str, u32); from_str_radix_bench!(bench_u32_from_str_radix_2, u32, 2); from_str_radix_bench!(bench_u32_from_str_radix_10, u32, 10); from_str_radix_bench!(bench_u32_from_str_radix_16, u32, 16); from_str_radix_bench!(bench_u32_from_str_radix_36, u32, 36); from_str_bench!(bench_u64_from_str, u64); from_str_radix_bench!(bench_u64_from_str_radix_2, u64, 2); from_str_radix_bench!(bench_u64_from_str_radix_10, u64, 10); from_str_radix_bench!(bench_u64_from_str_radix_16, u64, 16); from_str_radix_bench!(bench_u64_from_str_radix_36, u64, 36); from_str_bench!(bench_i8_from_str, i8); from_str_radix_bench!(bench_i8_from_str_radix_2, i8, 2); from_str_radix_bench!(bench_i8_from_str_radix_10, i8, 10); from_str_radix_bench!(bench_i8_from_str_radix_16, i8, 16); from_str_radix_bench!(bench_i8_from_str_radix_36, i8, 36); from_str_bench!(bench_i16_from_str, i16); from_str_radix_bench!(bench_i16_from_str_radix_2, i16, 2); from_str_radix_bench!(bench_i16_from_str_radix_10, i16, 10); from_str_radix_bench!(bench_i16_from_str_radix_16, i16, 16); from_str_radix_bench!(bench_i16_from_str_radix_36, i16, 36); from_str_bench!(bench_i32_from_str, i32); from_str_radix_bench!(bench_i32_from_str_radix_2, i32, 2); from_str_radix_bench!(bench_i32_from_str_radix_10, i32, 10); from_str_radix_bench!(bench_i32_from_str_radix_16, i32, 16); from_str_radix_bench!(bench_i32_from_str_radix_36, i32, 36); from_str_bench!(bench_i64_from_str, i64); from_str_radix_bench!(bench_i64_from_str_radix_2, i64, 2); from_str_radix_bench!(bench_i64_from_str_radix_10, i64, 10); from_str_radix_bench!(bench_i64_from_str_radix_16, i64, 16); from_str_radix_bench!(bench_i64_from_str_radix_36, i64, 36);