Skip to content

Commit f678d2b

Browse files
committed
Merge remote-tracking branch 'pitdicker/chacha'
2 parents 8b36d3b + c320c7d commit f678d2b

File tree

2 files changed

+258
-79
lines changed

2 files changed

+258
-79
lines changed

benches/generators.rs

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,9 @@ gen_bytes!(gen_bytes_xorshift, XorShiftRng);
3333
gen_bytes!(gen_bytes_hc128, Hc128Rng);
3434
gen_bytes!(gen_bytes_isaac, IsaacRng);
3535
gen_bytes!(gen_bytes_isaac64, Isaac64Rng);
36-
gen_bytes!(gen_bytes_chacha, ChaChaRng);
3736
gen_bytes!(gen_bytes_std, StdRng);
3837
gen_bytes!(gen_bytes_os, OsRng);
3938

40-
4139
macro_rules! gen_uint {
4240
($fnn:ident, $ty:ty, $gen:ident) => {
4341
#[bench]
@@ -72,18 +70,18 @@ gen_uint!(gen_u32_xorshift, u32, XorShiftRng);
7270
gen_uint!(gen_u32_hc128, u32, Hc128Rng);
7371
gen_uint!(gen_u32_isaac, u32, IsaacRng);
7472
gen_uint!(gen_u32_isaac64, u32, Isaac64Rng);
75-
gen_uint!(gen_u32_chacha, u32, ChaChaRng);
7673
gen_uint_new!(gen_u32_std, u32, StdRng);
7774
gen_uint_new!(gen_u32_os, u32, OsRng);
7875

7976
gen_uint!(gen_u64_xorshift, u64, XorShiftRng);
8077
gen_uint!(gen_u64_hc128, u64, Hc128Rng);
8178
gen_uint!(gen_u64_isaac, u64, IsaacRng);
8279
gen_uint!(gen_u64_isaac64, u64, Isaac64Rng);
83-
gen_uint!(gen_u64_chacha, u64, ChaChaRng);
8480
gen_uint_new!(gen_u64_std, u64, StdRng);
8581
gen_uint_new!(gen_u64_os, u64, OsRng);
8682

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.
8785
#[bench]
8886
fn gen_u64_jitter(b: &mut Bencher) {
8987
let mut rng = JitterRng::new().unwrap();
@@ -118,3 +116,49 @@ fn init_jitter(b: &mut Bencher) {
118116
black_box(JitterRng::new().unwrap());
119117
});
120118
}
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

Comments
 (0)