@@ -5,16 +5,15 @@ extern crate rand;
5
5
6
6
const RAND_BENCH_N : u64 = 1000 ;
7
7
8
- use test:: { black_box , Bencher } ;
8
+ use test:: Bencher ;
9
9
10
10
use rand:: prelude:: * ;
11
11
use rand:: seq:: * ;
12
12
13
13
#[ bench]
14
14
fn misc_gen_bool_const ( b : & mut Bencher ) {
15
- let mut rng = SmallRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
15
+ let mut rng = StdRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
16
16
b. iter ( || {
17
- // Can be evaluated at compile time.
18
17
let mut accum = true ;
19
18
for _ in 0 ..:: RAND_BENCH_N {
20
19
accum ^= rng. gen_bool ( 0.18 ) ;
@@ -25,19 +24,21 @@ fn misc_gen_bool_const(b: &mut Bencher) {
25
24
26
25
#[ bench]
27
26
fn misc_gen_bool_var ( b : & mut Bencher ) {
28
- let mut rng = SmallRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
27
+ let mut rng = StdRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
29
28
b. iter ( || {
29
+ let mut accum = true ;
30
30
let mut p = 0.18 ;
31
- black_box ( & mut p) ; // Avoid constant folding.
32
31
for _ in 0 ..:: RAND_BENCH_N {
33
- black_box ( rng. gen_bool ( p) ) ;
32
+ accum ^= rng. gen_bool ( p) ;
33
+ p += 0.0001 ;
34
34
}
35
+ accum
35
36
} )
36
37
}
37
38
38
39
#[ bench]
39
40
fn misc_bernoulli_const ( b : & mut Bencher ) {
40
- let mut rng = SmallRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
41
+ let mut rng = StdRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
41
42
let d = rand:: distributions:: Bernoulli :: new ( 0.18 ) ;
42
43
b. iter ( || {
43
44
// Can be evaluated at compile time.
@@ -51,14 +52,16 @@ fn misc_bernoulli_const(b: &mut Bencher) {
51
52
52
53
#[ bench]
53
54
fn misc_bernoulli_var ( b : & mut Bencher ) {
54
- let mut rng = SmallRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
55
+ let mut rng = StdRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
55
56
b. iter ( || {
57
+ let mut accum = true ;
56
58
let mut p = 0.18 ;
57
- black_box ( & mut p) ; // Avoid constant folding.
58
- let d = rand:: distributions:: Bernoulli :: new ( p) ;
59
59
for _ in 0 ..:: RAND_BENCH_N {
60
- black_box ( rng. sample ( d) ) ;
60
+ let d = rand:: distributions:: Bernoulli :: new ( p) ;
61
+ accum ^= rng. sample ( d) ;
62
+ p += 0.0001 ;
61
63
}
64
+ accum
62
65
} )
63
66
}
64
67
@@ -70,7 +73,7 @@ macro_rules! sample_binomial {
70
73
let ( n, p) = ( $n, $p) ;
71
74
b. iter( || {
72
75
let d = rand:: distributions:: Binomial :: new( n, p) ;
73
- black_box ( rng. sample( d) ) ;
76
+ rng. sample( d)
74
77
} )
75
78
}
76
79
}
@@ -88,7 +91,7 @@ fn misc_shuffle_100(b: &mut Bencher) {
88
91
let x : & mut [ usize ] = & mut [ 1 ; 100 ] ;
89
92
b. iter ( || {
90
93
rng. shuffle ( x) ;
91
- black_box ( & x ) ;
94
+ x [ 0 ]
92
95
} )
93
96
}
94
97
@@ -97,7 +100,7 @@ fn misc_sample_iter_10_of_100(b: &mut Bencher) {
97
100
let mut rng = SmallRng :: from_rng ( thread_rng ( ) ) . unwrap ( ) ;
98
101
let x : & [ usize ] = & [ 1 ; 100 ] ;
99
102
b. iter ( || {
100
- black_box ( sample_iter ( & mut rng, x, 10 ) . unwrap_or_else ( |e| e) ) ;
103
+ sample_iter ( & mut rng, x, 10 ) . unwrap_or_else ( |e| e)
101
104
} )
102
105
}
103
106
@@ -106,7 +109,7 @@ fn misc_sample_slice_10_of_100(b: &mut Bencher) {
106
109
let mut rng = SmallRng :: from_rng ( thread_rng ( ) ) . unwrap ( ) ;
107
110
let x : & [ usize ] = & [ 1 ; 100 ] ;
108
111
b. iter ( || {
109
- black_box ( sample_slice ( & mut rng, x, 10 ) ) ;
112
+ sample_slice ( & mut rng, x, 10 )
110
113
} )
111
114
}
112
115
@@ -115,7 +118,7 @@ fn misc_sample_slice_ref_10_of_100(b: &mut Bencher) {
115
118
let mut rng = SmallRng :: from_rng ( thread_rng ( ) ) . unwrap ( ) ;
116
119
let x : & [ usize ] = & [ 1 ; 100 ] ;
117
120
b. iter ( || {
118
- black_box ( sample_slice_ref ( & mut rng, x, 10 ) ) ;
121
+ sample_slice_ref ( & mut rng, x, 10 )
119
122
} )
120
123
}
121
124
@@ -125,7 +128,7 @@ macro_rules! sample_indices {
125
128
fn $name( b: & mut Bencher ) {
126
129
let mut rng = SmallRng :: from_rng( thread_rng( ) ) . unwrap( ) ;
127
130
b. iter( || {
128
- black_box ( sample_indices( & mut rng, $length, $amount) ) ;
131
+ sample_indices( & mut rng, $length, $amount)
129
132
} )
130
133
}
131
134
}
@@ -141,7 +144,7 @@ fn gen_1k_iter_repeat(b: &mut Bencher) {
141
144
let mut rng = SmallRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
142
145
b. iter ( || {
143
146
let v: Vec < u64 > = iter:: repeat ( ( ) ) . map ( |( ) | rng. gen ( ) ) . take ( 128 ) . collect ( ) ;
144
- black_box ( v ) ;
147
+ v
145
148
} ) ;
146
149
b. bytes = 1024 ;
147
150
}
@@ -152,7 +155,7 @@ fn gen_1k_gen_iter(b: &mut Bencher) {
152
155
let mut rng = SmallRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
153
156
b. iter ( || {
154
157
let v: Vec < u64 > = rng. gen_iter ( ) . take ( 128 ) . collect ( ) ;
155
- black_box ( v ) ;
158
+ v
156
159
} ) ;
157
160
b. bytes = 1024 ;
158
161
}
@@ -163,7 +166,7 @@ fn gen_1k_sample_iter(b: &mut Bencher) {
163
166
let mut rng = SmallRng :: from_rng ( & mut thread_rng ( ) ) . unwrap ( ) ;
164
167
b. iter ( || {
165
168
let v: Vec < u64 > = Standard . sample_iter ( & mut rng) . take ( 128 ) . collect ( ) ;
166
- black_box ( v ) ;
169
+ v
167
170
} ) ;
168
171
b. bytes = 1024 ;
169
172
}
@@ -174,7 +177,7 @@ fn gen_1k_fill(b: &mut Bencher) {
174
177
let mut buf = [ 0u64 ; 128 ] ;
175
178
b. iter ( || {
176
179
rng. fill ( & mut buf[ ..] ) ;
177
- black_box ( buf) ;
180
+ buf
178
181
} ) ;
179
182
b. bytes = 1024 ;
180
183
}
0 commit comments