@@ -3,7 +3,7 @@ use core::num::NonZero;
3
3
use criterion:: { criterion_group, criterion_main, BatchSize , Criterion } ;
4
4
use crypto_bigint:: { nlimbs, BoxedUint , Integer , Odd , RandomBits , Uint , U1024 , U128 , U256 } ;
5
5
use rand_chacha:: ChaCha8Rng ;
6
- use rand_core:: { CryptoRngCore , OsRng , SeedableRng } ;
6
+ use rand_core:: { CryptoRngCore , OsRng , RngCore , SeedableRng } ;
7
7
8
8
#[ cfg( feature = "tests-gmp" ) ]
9
9
use rug:: { integer:: Order , Integer as GmpInteger } ;
@@ -25,6 +25,12 @@ fn make_rng() -> ChaCha8Rng {
25
25
ChaCha8Rng :: from_seed ( * b"01234567890123456789012345678901" )
26
26
}
27
27
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
+
28
34
fn random_odd_uint < T : RandomBits + Integer > ( rng : & mut impl CryptoRngCore , bit_length : u32 ) -> Odd < T > {
29
35
random_odd_integer :: < T > ( rng, NonZero :: new ( bit_length) . unwrap ( ) )
30
36
}
@@ -282,38 +288,58 @@ fn bench_presets(c: &mut Criterion) {
282
288
#[ cfg( feature = "multicore" ) ]
283
289
fn bench_multicore_presets ( c : & mut Criterion ) {
284
290
let mut group = c. benchmark_group ( "Presets (multicore)" ) ;
285
- let mut rng = make_rng ( ) ;
291
+
286
292
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
+ )
288
298
} ) ;
289
299
290
- let mut rng = make_rng ( ) ;
291
300
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
+ )
293
306
} ) ;
294
307
295
- let mut rng = make_rng ( ) ;
296
308
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
+ )
298
314
} ) ;
299
315
300
316
group. sample_size ( 20 ) ;
301
- let mut rng = make_rng ( ) ;
302
317
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
+ )
304
323
} ) ;
305
324
306
- let mut rng = make_rng ( ) ;
307
325
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
+ )
309
331
} ) ;
310
332
311
333
group. sample_size ( 20 ) ;
312
- let mut rng = make_rng ( ) ;
313
334
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
+ )
315
340
} ) ;
316
341
}
342
+
317
343
#[ cfg( not( feature = "multicore" ) ) ]
318
344
fn bench_multicore_presets ( _c : & mut Criterion ) { }
319
345
0 commit comments