Skip to content

Commit fe84cec

Browse files
committed
fix #107590, Fix benchmarks in library/core with black_box
1 parent 04a41f8 commit fe84cec

File tree

3 files changed

+44
-32
lines changed

3 files changed

+44
-32
lines changed

library/core/benches/char/methods.rs

+26-14
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
1-
use test::Bencher;
1+
use test::{black_box, Bencher};
22

33
const CHARS: [char; 9] = ['0', 'x', '2', '5', 'A', 'f', '7', '8', '9'];
44
const RADIX: [u32; 5] = [2, 8, 10, 16, 32];
55

66
#[bench]
77
fn bench_to_digit_radix_2(b: &mut Bencher) {
8-
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| c.to_digit(2)).min())
8+
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| black_box(c).to_digit(2)).min())
99
}
1010

1111
#[bench]
1212
fn bench_to_digit_radix_10(b: &mut Bencher) {
13-
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| c.to_digit(10)).min())
13+
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| black_box(c).to_digit(10)).min())
1414
}
1515

1616
#[bench]
1717
fn bench_to_digit_radix_16(b: &mut Bencher) {
18-
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| c.to_digit(16)).min())
18+
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| black_box(c).to_digit(16)).min())
1919
}
2020

2121
#[bench]
2222
fn bench_to_digit_radix_36(b: &mut Bencher) {
23-
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| c.to_digit(36)).min())
23+
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| black_box(c).to_digit(36)).min())
2424
}
2525

2626
#[bench]
@@ -31,47 +31,59 @@ fn bench_to_digit_radix_var(b: &mut Bencher) {
3131
.cycle()
3232
.zip(RADIX.iter().cycle())
3333
.take(10_000)
34-
.map(|(c, radix)| c.to_digit(*radix))
34+
.map(|(c, radix)| black_box(c).to_digit(*radix))
3535
.min()
3636
})
3737
}
3838

3939
#[bench]
4040
fn bench_to_ascii_uppercase(b: &mut Bencher) {
41-
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| c.to_ascii_uppercase()).min())
41+
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| black_box(c).to_ascii_uppercase()).min())
4242
}
4343

4444
#[bench]
4545
fn bench_to_ascii_lowercase(b: &mut Bencher) {
46-
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| c.to_ascii_lowercase()).min())
46+
b.iter(|| CHARS.iter().cycle().take(10_000).map(|c| black_box(c).to_ascii_lowercase()).min())
4747
}
4848

4949
#[bench]
5050
fn bench_ascii_mix_to_uppercase(b: &mut Bencher) {
51-
b.iter(|| (0..=255).cycle().take(10_000).map(|b| char::from(b).to_uppercase()).count())
51+
b.iter(|| {
52+
(0..=255).cycle().take(10_000).map(|b| black_box(char::from(b)).to_uppercase()).count()
53+
})
5254
}
5355

5456
#[bench]
5557
fn bench_ascii_mix_to_lowercase(b: &mut Bencher) {
56-
b.iter(|| (0..=255).cycle().take(10_000).map(|b| char::from(b).to_lowercase()).count())
58+
b.iter(|| {
59+
(0..=255).cycle().take(10_000).map(|b| black_box(char::from(b)).to_lowercase()).count()
60+
})
5761
}
5862

5963
#[bench]
6064
fn bench_ascii_char_to_uppercase(b: &mut Bencher) {
61-
b.iter(|| (0..=127).cycle().take(10_000).map(|b| char::from(b).to_uppercase()).count())
65+
b.iter(|| {
66+
(0..=127).cycle().take(10_000).map(|b| black_box(char::from(b)).to_uppercase()).count()
67+
})
6268
}
6369

6470
#[bench]
6571
fn bench_ascii_char_to_lowercase(b: &mut Bencher) {
66-
b.iter(|| (0..=127).cycle().take(10_000).map(|b| char::from(b).to_lowercase()).count())
72+
b.iter(|| {
73+
(0..=127).cycle().take(10_000).map(|b| black_box(char::from(b)).to_lowercase()).count()
74+
})
6775
}
6876

6977
#[bench]
7078
fn bench_non_ascii_char_to_uppercase(b: &mut Bencher) {
71-
b.iter(|| (128..=255).cycle().take(10_000).map(|b| char::from(b).to_uppercase()).count())
79+
b.iter(|| {
80+
(128..=255).cycle().take(10_000).map(|b| black_box(char::from(b)).to_uppercase()).count()
81+
})
7282
}
7383

7484
#[bench]
7585
fn bench_non_ascii_char_to_lowercase(b: &mut Bencher) {
76-
b.iter(|| (128..=255).cycle().take(10_000).map(|b| char::from(b).to_lowercase()).count())
86+
b.iter(|| {
87+
(128..=255).cycle().take(10_000).map(|b| black_box(char::from(b)).to_lowercase()).count()
88+
})
7789
}
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use super::super::*;
22
use core::num::flt2dec::strategy::dragon::*;
33
use std::mem::MaybeUninit;
4-
use test::Bencher;
4+
use test::{black_box, Bencher};
55

66
#[bench]
77
fn bench_small_shortest(b: &mut Bencher) {
88
let decoded = decode_finite(3.141592f64);
99
let mut buf = [MaybeUninit::new(0); MAX_SIG_DIGITS];
1010
b.iter(|| {
11-
format_shortest(&decoded, &mut buf);
11+
format_shortest(black_box(&decoded), &mut buf);
1212
});
1313
}
1414

@@ -17,7 +17,7 @@ fn bench_big_shortest(b: &mut Bencher) {
1717
let decoded = decode_finite(f64::MAX);
1818
let mut buf = [MaybeUninit::new(0); MAX_SIG_DIGITS];
1919
b.iter(|| {
20-
format_shortest(&decoded, &mut buf);
20+
format_shortest(black_box(&decoded), &mut buf);
2121
});
2222
}
2323

@@ -26,7 +26,7 @@ fn bench_small_exact_3(b: &mut Bencher) {
2626
let decoded = decode_finite(3.141592f64);
2727
let mut buf = [MaybeUninit::new(0); 3];
2828
b.iter(|| {
29-
format_exact(&decoded, &mut buf, i16::MIN);
29+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
3030
});
3131
}
3232

@@ -35,7 +35,7 @@ fn bench_big_exact_3(b: &mut Bencher) {
3535
let decoded = decode_finite(f64::MAX);
3636
let mut buf = [MaybeUninit::new(0); 3];
3737
b.iter(|| {
38-
format_exact(&decoded, &mut buf, i16::MIN);
38+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
3939
});
4040
}
4141

@@ -44,7 +44,7 @@ fn bench_small_exact_12(b: &mut Bencher) {
4444
let decoded = decode_finite(3.141592f64);
4545
let mut buf = [MaybeUninit::new(0); 12];
4646
b.iter(|| {
47-
format_exact(&decoded, &mut buf, i16::MIN);
47+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
4848
});
4949
}
5050

@@ -53,7 +53,7 @@ fn bench_big_exact_12(b: &mut Bencher) {
5353
let decoded = decode_finite(f64::MAX);
5454
let mut buf = [MaybeUninit::new(0); 12];
5555
b.iter(|| {
56-
format_exact(&decoded, &mut buf, i16::MIN);
56+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
5757
});
5858
}
5959

@@ -62,7 +62,7 @@ fn bench_small_exact_inf(b: &mut Bencher) {
6262
let decoded = decode_finite(3.141592f64);
6363
let mut buf = [MaybeUninit::new(0); 1024];
6464
b.iter(|| {
65-
format_exact(&decoded, &mut buf, i16::MIN);
65+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
6666
});
6767
}
6868

@@ -71,6 +71,6 @@ fn bench_big_exact_inf(b: &mut Bencher) {
7171
let decoded = decode_finite(f64::MAX);
7272
let mut buf = [MaybeUninit::new(0); 1024];
7373
b.iter(|| {
74-
format_exact(&decoded, &mut buf, i16::MIN);
74+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
7575
});
7676
}

library/core/benches/num/flt2dec/strategy/grisu.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::super::*;
22
use core::num::flt2dec::strategy::grisu::*;
33
use std::mem::MaybeUninit;
4-
use test::Bencher;
4+
use test::{black_box, Bencher};
55

66
pub fn decode_finite<T: DecodableFloat>(v: T) -> Decoded {
77
match decode(v).1 {
@@ -15,7 +15,7 @@ fn bench_small_shortest(b: &mut Bencher) {
1515
let decoded = decode_finite(3.141592f64);
1616
let mut buf = [MaybeUninit::new(0); MAX_SIG_DIGITS];
1717
b.iter(|| {
18-
format_shortest(&decoded, &mut buf);
18+
format_shortest(black_box(&decoded), &mut buf);
1919
});
2020
}
2121

@@ -24,7 +24,7 @@ fn bench_big_shortest(b: &mut Bencher) {
2424
let decoded = decode_finite(f64::MAX);
2525
let mut buf = [MaybeUninit::new(0); MAX_SIG_DIGITS];
2626
b.iter(|| {
27-
format_shortest(&decoded, &mut buf);
27+
format_shortest(black_box(&decoded), &mut buf);
2828
});
2929
}
3030

@@ -33,7 +33,7 @@ fn bench_small_exact_3(b: &mut Bencher) {
3333
let decoded = decode_finite(3.141592f64);
3434
let mut buf = [MaybeUninit::new(0); 3];
3535
b.iter(|| {
36-
format_exact(&decoded, &mut buf, i16::MIN);
36+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
3737
});
3838
}
3939

@@ -42,7 +42,7 @@ fn bench_big_exact_3(b: &mut Bencher) {
4242
let decoded = decode_finite(f64::MAX);
4343
let mut buf = [MaybeUninit::new(0); 3];
4444
b.iter(|| {
45-
format_exact(&decoded, &mut buf, i16::MIN);
45+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
4646
});
4747
}
4848

@@ -51,7 +51,7 @@ fn bench_small_exact_12(b: &mut Bencher) {
5151
let decoded = decode_finite(3.141592f64);
5252
let mut buf = [MaybeUninit::new(0); 12];
5353
b.iter(|| {
54-
format_exact(&decoded, &mut buf, i16::MIN);
54+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
5555
});
5656
}
5757

@@ -60,7 +60,7 @@ fn bench_big_exact_12(b: &mut Bencher) {
6060
let decoded = decode_finite(f64::MAX);
6161
let mut buf = [MaybeUninit::new(0); 12];
6262
b.iter(|| {
63-
format_exact(&decoded, &mut buf, i16::MIN);
63+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
6464
});
6565
}
6666

@@ -69,7 +69,7 @@ fn bench_small_exact_inf(b: &mut Bencher) {
6969
let decoded = decode_finite(3.141592f64);
7070
let mut buf = [MaybeUninit::new(0); 1024];
7171
b.iter(|| {
72-
format_exact(&decoded, &mut buf, i16::MIN);
72+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
7373
});
7474
}
7575

@@ -78,6 +78,6 @@ fn bench_big_exact_inf(b: &mut Bencher) {
7878
let decoded = decode_finite(f64::MAX);
7979
let mut buf = [MaybeUninit::new(0); 1024];
8080
b.iter(|| {
81-
format_exact(&decoded, &mut buf, i16::MIN);
81+
format_exact(black_box(&decoded), &mut buf, i16::MIN);
8282
});
8383
}

0 commit comments

Comments
 (0)