1
1
use criterion:: { black_box, criterion_group, criterion_main, BenchmarkId , Criterion , Throughput } ;
2
2
3
- use primes:: { PrimeSet , TrialDivision } ;
3
+ use primes:: { PrimeSet , Sieve , TrialDivision } ;
4
4
5
5
fn bench_primes ( c : & mut Criterion ) {
6
- let mut group = c. benchmark_group ( "TrialDivision::find" ) ;
7
-
8
6
let mut sizes: Vec < u64 > = Vec :: new ( ) ;
9
7
for & base in & [ 5_000 , 50_000 ] {
10
8
for size in 2 ..=20 {
@@ -14,12 +12,25 @@ fn bench_primes(c: &mut Criterion) {
14
12
sizes. sort ( ) ;
15
13
sizes. dedup ( ) ;
16
14
15
+ let mut group = c. benchmark_group ( "TrialDivision::find" ) ;
16
+ for & size in sizes. iter ( ) {
17
+ group. throughput ( Throughput :: Elements ( size) ) ;
18
+ group. bench_with_input ( BenchmarkId :: from_parameter ( size) , & size, |b, & size| {
19
+ b. iter ( || {
20
+ let mut pset = TrialDivision :: new ( ) ;
21
+ black_box ( pset. find ( size) )
22
+ } )
23
+ } ) ;
24
+ }
25
+ group. finish ( ) ;
26
+
27
+ let mut group = c. benchmark_group ( "Sieve::find" ) ;
17
28
for & size in sizes. iter ( ) {
18
29
group. throughput ( Throughput :: Elements ( size) ) ;
19
30
group. bench_with_input ( BenchmarkId :: from_parameter ( size) , & size, |b, & size| {
20
31
b. iter ( || {
21
- let mut td = TrialDivision :: new ( ) ;
22
- black_box ( td . find ( size) )
32
+ let mut pset = Sieve :: new ( ) ;
33
+ black_box ( pset . find ( size) )
23
34
} )
24
35
} ) ;
25
36
}
0 commit comments