Skip to content

Commit bed1703

Browse files
committed
Distribution benchmarks: further tweaks; improve range bench perf
1 parent d65fa1b commit bed1703

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

benches/distributions.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,30 +108,28 @@ distr_int!(distr_poisson, u64, Poisson::new(4.0));
108108

109109
// construct and sample from a range
110110
macro_rules! gen_range_int {
111-
($fnn:ident, $ty:ty, $low:expr, $high:expr) => {
111+
($fnn:ident, $ty:ty, $low:expr, $high:expr, $incr:expr) => {
112112
#[bench]
113113
fn $fnn(b: &mut Bencher) {
114114
let mut rng = XorShiftRng::new();
115-
let mut high = $high;
116-
let fake_increment = 0;
117115

118116
b.iter(|| {
117+
let mut high = $high;
119118
let mut accum: $ty = 0;
120119
for _ in 0..::RAND_BENCH_N {
121120
accum = accum.wrapping_add(rng.gen_range($low, high));
122-
high += fake_increment;
121+
high += $incr; // force recalculation of range each time
123122
}
124123
black_box(accum);
125-
black_box(fake_increment);
126124
});
127125
b.bytes = size_of::<$ty>() as u64 * ::RAND_BENCH_N;
128126
}
129127
}
130128
}
131129

132-
gen_range_int!(gen_range_i8, i8, 20i8, 100);
133-
gen_range_int!(gen_range_i16, i16, -500i16, 2000);
134-
gen_range_int!(gen_range_i32, i32, -200_000_000i32, 800_000_000);
135-
gen_range_int!(gen_range_i64, i64, 3i64, 12345678901234);
130+
gen_range_int!(gen_range_i8, i8, 20i8, 100, 0);
131+
gen_range_int!(gen_range_i16, i16, -500i16, 2000, 1);
132+
gen_range_int!(gen_range_i32, i32, -200_000_000i32, 800_000_000, 3);
133+
gen_range_int!(gen_range_i64, i64, 3i64, 12345678901234, 3);
136134
#[cfg(feature = "i128_support")]
137-
gen_range_int!(gen_range_i128, i128, -12345678901234i128, 12345678901234567890);
135+
gen_range_int!(gen_range_i128, i128, -12345678901234i128, 12345678901234567890, 3);

0 commit comments

Comments
 (0)