@@ -33,11 +33,9 @@ gen_bytes!(gen_bytes_xorshift, XorShiftRng);
33
33
gen_bytes ! ( gen_bytes_hc128, Hc128Rng ) ;
34
34
gen_bytes ! ( gen_bytes_isaac, IsaacRng ) ;
35
35
gen_bytes ! ( gen_bytes_isaac64, Isaac64Rng ) ;
36
- gen_bytes ! ( gen_bytes_chacha, ChaChaRng ) ;
37
36
gen_bytes ! ( gen_bytes_std, StdRng ) ;
38
37
gen_bytes ! ( gen_bytes_os, OsRng ) ;
39
38
40
-
41
39
macro_rules! gen_uint {
42
40
( $fnn: ident, $ty: ty, $gen: ident) => {
43
41
#[ bench]
@@ -72,18 +70,18 @@ gen_uint!(gen_u32_xorshift, u32, XorShiftRng);
72
70
gen_uint ! ( gen_u32_hc128, u32 , Hc128Rng ) ;
73
71
gen_uint ! ( gen_u32_isaac, u32 , IsaacRng ) ;
74
72
gen_uint ! ( gen_u32_isaac64, u32 , Isaac64Rng ) ;
75
- gen_uint ! ( gen_u32_chacha, u32 , ChaChaRng ) ;
76
73
gen_uint_new ! ( gen_u32_std, u32 , StdRng ) ;
77
74
gen_uint_new ! ( gen_u32_os, u32 , OsRng ) ;
78
75
79
76
gen_uint ! ( gen_u64_xorshift, u64 , XorShiftRng ) ;
80
77
gen_uint ! ( gen_u64_hc128, u64 , Hc128Rng ) ;
81
78
gen_uint ! ( gen_u64_isaac, u64 , IsaacRng ) ;
82
79
gen_uint ! ( gen_u64_isaac64, u64 , Isaac64Rng ) ;
83
- gen_uint ! ( gen_u64_chacha, u64 , ChaChaRng ) ;
84
80
gen_uint_new ! ( gen_u64_std, u64 , StdRng ) ;
85
81
gen_uint_new ! ( gen_u64_os, u64 , OsRng ) ;
86
82
83
+ // Do not test JitterRng like the others by running it RAND_BENCH_N times per,
84
+ // measurement, because it is way too slow. Only run it once.
87
85
#[ bench]
88
86
fn gen_u64_jitter ( b : & mut Bencher ) {
89
87
let mut rng = JitterRng :: new ( ) . unwrap ( ) ;
@@ -118,3 +116,49 @@ fn init_jitter(b: &mut Bencher) {
118
116
black_box ( JitterRng :: new ( ) . unwrap ( ) ) ;
119
117
} ) ;
120
118
}
119
+
120
+ macro_rules! chacha_rounds {
121
+ ( $fn1: ident, $fn2: ident, $fn3: ident, $rounds: expr) => {
122
+ #[ bench]
123
+ fn $fn1( b: & mut Bencher ) {
124
+ let mut rng = ChaChaRng :: new( ) . unwrap( ) ;
125
+ rng. set_rounds( $rounds) ;
126
+ let mut buf = [ 0u8 ; BYTES_LEN ] ;
127
+ b. iter( || {
128
+ for _ in 0 ..RAND_BENCH_N {
129
+ rng. fill_bytes( & mut buf) ;
130
+ black_box( buf) ;
131
+ }
132
+ } ) ;
133
+ b. bytes = BYTES_LEN as u64 * RAND_BENCH_N ;
134
+ }
135
+
136
+ #[ bench]
137
+ fn $fn2( b: & mut Bencher ) {
138
+ let mut rng = ChaChaRng :: new( ) . unwrap( ) ;
139
+ rng. set_rounds( $rounds) ;
140
+ b. iter( || {
141
+ for _ in 0 ..RAND_BENCH_N {
142
+ black_box( rng. gen :: <u32 >( ) ) ;
143
+ }
144
+ } ) ;
145
+ b. bytes = size_of:: <u32 >( ) as u64 * RAND_BENCH_N ;
146
+ }
147
+
148
+ #[ bench]
149
+ fn $fn3( b: & mut Bencher ) {
150
+ let mut rng = ChaChaRng :: new( ) . unwrap( ) ;
151
+ rng. set_rounds( $rounds) ;
152
+ b. iter( || {
153
+ for _ in 0 ..RAND_BENCH_N {
154
+ black_box( rng. gen :: <u64 >( ) ) ;
155
+ }
156
+ } ) ;
157
+ b. bytes = size_of:: <u64 >( ) as u64 * RAND_BENCH_N ;
158
+ }
159
+ }
160
+ }
161
+
162
+ chacha_rounds ! ( gen_bytes_chacha8, gen_u32_chacha8, gen_u64_chacha8, 8 ) ;
163
+ chacha_rounds ! ( gen_bytes_chacha12, gen_u32_chacha12, gen_u64_chacha12, 12 ) ;
164
+ chacha_rounds ! ( gen_bytes_chacha20, gen_u32_chacha20, gen_u64_chacha20, 20 ) ;
0 commit comments