@@ -108,30 +108,28 @@ distr_int!(distr_poisson, u64, Poisson::new(4.0));
108
108
109
109
// construct and sample from a range
110
110
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 ) => {
112
112
#[ bench]
113
113
fn $fnn( b: & mut Bencher ) {
114
114
let mut rng = XorShiftRng :: new( ) ;
115
- let mut high = $high;
116
- let fake_increment = 0 ;
117
115
118
116
b. iter( || {
117
+ let mut high = $high;
119
118
let mut accum: $ty = 0 ;
120
119
for _ in 0 ..:: RAND_BENCH_N {
121
120
accum = accum. wrapping_add( rng. gen_range( $low, high) ) ;
122
- high += fake_increment ;
121
+ high += $incr ; // force recalculation of range each time
123
122
}
124
123
black_box( accum) ;
125
- black_box( fake_increment) ;
126
124
} ) ;
127
125
b. bytes = size_of:: <$ty>( ) as u64 * :: RAND_BENCH_N ;
128
126
}
129
127
}
130
128
}
131
129
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 ) ;
136
134
#[ 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