Skip to content

Commit d2c4a39

Browse files
committed
Randomize benchmarks
1 parent 4ea84ca commit d2c4a39

File tree

1 file changed

+39
-13
lines changed

1 file changed

+39
-13
lines changed

benches/bench.rs

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use core::num::NonZero;
33
use criterion::{criterion_group, criterion_main, BatchSize, Criterion};
44
use crypto_bigint::{nlimbs, BoxedUint, Integer, Odd, RandomBits, Uint, U1024, U128, U256};
55
use rand_chacha::ChaCha8Rng;
6-
use rand_core::{CryptoRngCore, OsRng, SeedableRng};
6+
use rand_core::{CryptoRngCore, OsRng, RngCore, SeedableRng};
77

88
#[cfg(feature = "tests-gmp")]
99
use rug::{integer::Order, Integer as GmpInteger};
@@ -25,6 +25,12 @@ fn make_rng() -> ChaCha8Rng {
2525
ChaCha8Rng::from_seed(*b"01234567890123456789012345678901")
2626
}
2727

28+
fn make_random_rng() -> ChaCha8Rng {
29+
let mut seed = <ChaCha8Rng as SeedableRng>::Seed::default();
30+
OsRng.fill_bytes(&mut seed);
31+
ChaCha8Rng::from_seed(seed)
32+
}
33+
2834
fn random_odd_uint<T: RandomBits + Integer>(rng: &mut impl CryptoRngCore, bit_length: u32) -> Odd<T> {
2935
random_odd_integer::<T>(rng, NonZero::new(bit_length).unwrap())
3036
}
@@ -282,38 +288,58 @@ fn bench_presets(c: &mut Criterion) {
282288
#[cfg(feature = "multicore")]
283289
fn bench_multicore_presets(c: &mut Criterion) {
284290
let mut group = c.benchmark_group("Presets (multicore)");
285-
let mut rng = make_rng();
291+
286292
group.bench_function("(U128) Random prime", |b| {
287-
b.iter(|| par_generate_prime_with_rng::<U128>(&mut rng, 128, num_cpus::get()))
293+
b.iter_batched(
294+
make_random_rng,
295+
|mut rng| par_generate_prime_with_rng::<U128>(&mut rng, 128, num_cpus::get()),
296+
BatchSize::SmallInput,
297+
)
288298
});
289299

290-
let mut rng = make_rng();
291300
group.bench_function("(U1024) Random prime", |b| {
292-
b.iter(|| par_generate_prime_with_rng::<U1024>(&mut rng, 1024, num_cpus::get()))
301+
b.iter_batched(
302+
make_random_rng,
303+
|mut rng| par_generate_prime_with_rng::<U1024>(&mut rng, 1024, num_cpus::get()),
304+
BatchSize::SmallInput,
305+
)
293306
});
294307

295-
let mut rng = make_rng();
296308
group.bench_function("(U128) Random safe prime", |b| {
297-
b.iter(|| par_generate_safe_prime_with_rng::<U128>(&mut rng, 128, num_cpus::get()))
309+
b.iter_batched(
310+
make_random_rng,
311+
|mut rng| par_generate_safe_prime_with_rng::<U128>(&mut rng, 128, num_cpus::get()),
312+
BatchSize::SmallInput,
313+
)
298314
});
299315

300316
group.sample_size(20);
301-
let mut rng = make_rng();
302317
group.bench_function("(U1024) Random safe prime", |b| {
303-
b.iter(|| par_generate_safe_prime_with_rng::<U1024>(&mut rng, 1024, num_cpus::get()))
318+
b.iter_batched(
319+
make_random_rng,
320+
|mut rng| par_generate_safe_prime_with_rng::<U1024>(&mut rng, 1024, num_cpus::get()),
321+
BatchSize::SmallInput,
322+
)
304323
});
305324

306-
let mut rng = make_rng();
307325
group.bench_function("(Boxed128) Random safe prime", |b| {
308-
b.iter(|| par_generate_safe_prime_with_rng::<BoxedUint>(&mut rng, 128, num_cpus::get()))
326+
b.iter_batched(
327+
make_random_rng,
328+
|mut rng| par_generate_safe_prime_with_rng::<BoxedUint>(&mut rng, 128, num_cpus::get()),
329+
BatchSize::SmallInput,
330+
)
309331
});
310332

311333
group.sample_size(20);
312-
let mut rng = make_rng();
313334
group.bench_function("(Boxed1024) Random safe prime", |b| {
314-
b.iter(|| par_generate_safe_prime_with_rng::<BoxedUint>(&mut rng, 1024, num_cpus::get()))
335+
b.iter_batched(
336+
make_random_rng,
337+
|mut rng| par_generate_safe_prime_with_rng::<BoxedUint>(&mut rng, 1024, num_cpus::get()),
338+
BatchSize::SmallInput,
339+
)
315340
});
316341
}
342+
317343
#[cfg(not(feature = "multicore"))]
318344
fn bench_multicore_presets(_c: &mut Criterion) {}
319345

0 commit comments

Comments
 (0)