]> git.proxmox.com Git - rustc.git/blob - vendor/btoi/benches/benches.rs
New upstream version 1.70.0+dfsg2
[rustc.git] / vendor / btoi / benches / benches.rs
1 #[macro_use]
2 extern crate bencher;
3 extern crate btoi;
4
5 use bencher::{black_box, Bencher};
6
7 fn bench_btou(b: &mut Bencher) {
8 b.iter(|| assert_eq!(Ok(123_456_789u32), btoi::btou(black_box(b"123456789"))));
9 }
10
11 fn bench_btou_saturating(b: &mut Bencher) {
12 b.iter(|| {
13 assert_eq!(
14 Ok(123_456_789u32),
15 btoi::btou_saturating(black_box(b"123456789"))
16 )
17 });
18 }
19
20 fn bench_small_btou(b: &mut Bencher) {
21 b.iter(|| assert_eq!(Ok(42u8), btoi::btou(black_box(b"42"))));
22 }
23
24 fn bench_small_btou_saturating(b: &mut Bencher) {
25 b.iter(|| assert_eq!(Ok(255u8), btoi::btou_saturating(black_box(b"256"))));
26 }
27
28 fn bench_btoi(b: &mut Bencher) {
29 b.iter(|| assert_eq!(Ok(-123_456_789i32), btoi::btoi(black_box(b"-123456789"))));
30 }
31
32 fn bench_from_str(b: &mut Bencher) {
33 fn btou_from_str(s: &[u8]) -> Option<u32> {
34 ::std::str::from_utf8(s).ok().and_then(|s| s.parse().ok())
35 }
36
37 b.iter(|| assert_eq!(Some(123_456_789), btou_from_str(black_box(b"123456789"))));
38 }
39
40 fn bench_from_str_unchecked(b: &mut Bencher) {
41 unsafe fn btou_from_str_unchecked(s: &[u8]) -> Option<u32> {
42 ::std::str::from_utf8_unchecked(s).parse().ok()
43 }
44
45 b.iter(|| {
46 assert_eq!(Some(123_456_789), unsafe {
47 btou_from_str_unchecked(black_box(b"123456789"))
48 })
49 });
50 }
51
52 fn bench_small_from_str(b: &mut Bencher) {
53 fn btou_from_str(s: &[u8]) -> Option<u8> {
54 ::std::str::from_utf8(s).ok().and_then(|s| s.parse().ok())
55 }
56
57 b.iter(|| assert_eq!(Some(42u8), btou_from_str(black_box(b"42"))));
58 }
59
60 fn bench_small_from_str_unchecked(b: &mut Bencher) {
61 unsafe fn btou_from_str_unchecked(s: &[u8]) -> Option<u8> {
62 ::std::str::from_utf8_unchecked(s).parse().ok()
63 }
64
65 b.iter(|| {
66 assert_eq!(Some(42u8), unsafe {
67 btou_from_str_unchecked(black_box(b"42"))
68 })
69 });
70 }
71
72 benchmark_group!(
73 benches,
74 bench_btou,
75 bench_btou_saturating,
76 bench_btoi,
77 bench_from_str,
78 bench_from_str_unchecked,
79 bench_small_btou,
80 bench_small_btou_saturating,
81 bench_small_from_str,
82 bench_small_from_str_unchecked
83 );
84
85 benchmark_main!(benches);