1
- use std:: cell:: RefCell ;
2
-
3
1
use benchmarks:: { PHF_MAPS , QUICKPHF_MAPS , QUICKPHF_RAW_MAPS , SIZES } ;
4
2
5
3
const BATCH_SIZE : usize = 1000 ;
6
4
const SEED : u64 = 42 ;
7
5
8
6
#[ divan:: bench( consts = SIZES , sample_size = 1 ) ]
9
7
fn phf_map < const S : usize > ( bencher : divan:: Bencher ) {
10
- let rng = RefCell :: new ( fastrand:: Rng :: with_seed ( SEED ) ) ;
8
+ let mut rng = fastrand:: Rng :: with_seed ( SEED )
11
9
12
10
let index = SIZES . iter ( ) . position ( |& s| s == S ) . unwrap ( ) ;
13
11
let map = & PHF_MAPS [ index] ;
14
12
let keys = map. keys ( ) . copied ( ) . collect :: < Vec < _ > > ( ) ;
15
13
16
14
bencher
17
- . with_inputs ( || ( 0 ..BATCH_SIZE ) . map ( |_| keys[ rng. borrow_mut ( ) . usize ( 0 ..S ) ] ) )
15
+ . with_inputs ( || ( 0 ..BATCH_SIZE ) . map ( |_| keys[ rng. usize ( 0 ..S ) ] ) )
18
16
. bench_local_refs ( |queries| {
19
17
for query in queries {
20
18
divan:: black_box ( map. get ( & query) . unwrap ( ) ) ;
@@ -24,14 +22,14 @@ fn phf_map<const S: usize>(bencher: divan::Bencher) {
24
22
25
23
#[ divan:: bench( consts = SIZES , sample_size = 1 ) ]
26
24
fn quickphf_map < const S : usize > ( bencher : divan:: Bencher ) {
27
- let rng = RefCell :: new ( fastrand:: Rng :: with_seed ( SEED ) ) ;
25
+ let mut rng = fastrand:: Rng :: with_seed ( SEED )
28
26
29
27
let index = SIZES . iter ( ) . position ( |& s| s == S ) . unwrap ( ) ;
30
28
let map = & QUICKPHF_MAPS [ index] ;
31
29
let keys = map. keys ( ) . copied ( ) . collect :: < Vec < _ > > ( ) ;
32
30
33
31
bencher
34
- . with_inputs ( || ( 0 ..BATCH_SIZE ) . map ( |_| keys[ rng. borrow_mut ( ) . usize ( 0 ..S ) ] ) )
32
+ . with_inputs ( || ( 0 ..BATCH_SIZE ) . map ( |_| keys[ rng. usize ( 0 ..S ) ] ) )
35
33
. bench_local_refs ( |queries| {
36
34
for query in queries {
37
35
divan:: black_box ( map. get ( & query) . unwrap ( ) ) ;
@@ -41,14 +39,14 @@ fn quickphf_map<const S: usize>(bencher: divan::Bencher) {
41
39
42
40
#[ divan:: bench( consts = SIZES , sample_size = 1 ) ]
43
41
fn quickphf_raw_map < const S : usize > ( bencher : divan:: Bencher ) {
44
- let rng = RefCell :: new ( fastrand:: Rng :: with_seed ( SEED ) ) ;
42
+ let mut rng = fastrand:: Rng :: with_seed ( SEED )
45
43
46
44
let index = SIZES . iter ( ) . position ( |& s| s == S ) . unwrap ( ) ;
47
45
let map = & QUICKPHF_RAW_MAPS [ index] ;
48
46
let keys = & QUICKPHF_MAPS [ index] . keys ( ) . copied ( ) . collect :: < Vec < _ > > ( ) ;
49
47
50
48
bencher
51
- . with_inputs ( || ( 0 ..BATCH_SIZE ) . map ( |_| keys[ rng. borrow_mut ( ) . usize ( 0 ..S ) ] ) )
49
+ . with_inputs ( || ( 0 ..BATCH_SIZE ) . map ( |_| keys[ rng. usize ( 0 ..S ) ] ) )
52
50
. bench_local_refs ( |queries| {
53
51
for query in queries {
54
52
divan:: black_box ( map. get ( & query) ) ;
0 commit comments