1
- use ahash:: { CallHasher , RandomState } ;
1
+ use ahash:: RandomState ;
2
2
use criterion:: * ;
3
3
use farmhash:: FarmHasher ;
4
- use fnv:: { FnvBuildHasher } ;
4
+ use fnv:: FnvBuildHasher ;
5
5
use fxhash:: FxBuildHasher ;
6
6
use std:: hash:: { BuildHasher , BuildHasherDefault , Hash , Hasher } ;
7
+ use xxhash_rust:: xxh3:: Xxh3Builder ;
7
8
8
9
fn ahash < K : Hash > ( k : & K , builder : & RandomState ) -> u64 {
9
- let hasher = builder. build_hasher ( ) ;
10
- k. get_hash ( hasher)
10
+ let mut hasher = builder. build_hasher ( ) ;
11
+ k. hash ( & mut hasher) ;
12
+ hasher. finish ( )
11
13
}
12
14
13
15
fn generic_hash < K : Hash , B : BuildHasher > ( key : & K , builder : & B ) -> u64 {
@@ -28,25 +30,21 @@ fn create_string(len: usize) -> String {
28
30
fn compare_ahash ( c : & mut Criterion ) {
29
31
let builder = RandomState :: new ( ) ;
30
32
let test = "compare_ahash" ;
31
- for num in & [ 1 , 3 , 7 , 15 , 31 , 63 , 127 , 255 , 511 , 1023 ] {
33
+ for num in & [ 1 , 3 , 7 , 15 , 31 , 63 , 127 , 255 , 511 , 1023 ] {
32
34
let name = "string" . to_owned ( ) + & num. to_string ( ) ;
33
35
let string = create_string ( * num) ;
34
36
c. bench_with_input ( BenchmarkId :: new ( test, & name) , & string, |bencher, s| {
35
- bencher. iter ( || {
36
- black_box ( ahash ( s, & builder) )
37
- } ) ;
37
+ bencher. iter ( || black_box ( ahash ( s, & builder) ) ) ;
38
38
} ) ;
39
39
}
40
40
}
41
41
42
42
fn compare_other < B : BuildHasher > ( c : & mut Criterion , test : & str , builder : B ) {
43
- for num in & [ 1 , 3 , 7 , 15 , 31 , 63 , 127 , 255 , 511 , 1023 ] {
43
+ for num in & [ 1 , 3 , 7 , 15 , 31 , 63 , 127 , 255 , 511 , 1023 ] {
44
44
let name = "string" . to_owned ( ) + & num. to_string ( ) ;
45
45
let string = create_string ( * num) ;
46
46
c. bench_with_input ( BenchmarkId :: new ( test, & name) , & string, |bencher, s| {
47
- bencher. iter ( || {
48
- black_box ( generic_hash ( & s, & builder) )
49
- } ) ;
47
+ bencher. iter ( || black_box ( generic_hash ( & s, & builder) ) ) ;
50
48
} ) ;
51
49
}
52
50
}
@@ -117,7 +115,7 @@ fn compare_wyhash(c: &mut Criterion) {
117
115
fn compare_xxhash ( c : & mut Criterion ) {
118
116
let int: u64 = 1234 ;
119
117
let string = create_string ( 1024 ) ;
120
- let builder = twox_hash :: RandomXxHashBuilder64 :: default ( ) ;
118
+ let builder = Xxh3Builder :: default ( ) ;
121
119
compare_other ( c, "compare_xxhash" , builder)
122
120
}
123
121
0 commit comments