1- use ahash:: { CallHasher , RandomState } ;
1+ use ahash:: RandomState ;
22use criterion:: * ;
33use farmhash:: FarmHasher ;
4- use fnv:: { FnvBuildHasher } ;
4+ use fnv:: FnvBuildHasher ;
55use fxhash:: FxBuildHasher ;
66use std:: hash:: { BuildHasher , BuildHasherDefault , Hash , Hasher } ;
7+ use xxhash_rust:: xxh3:: Xxh3Builder ;
78
89fn 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 ( )
1113}
1214
1315fn generic_hash < K : Hash , B : BuildHasher > ( key : & K , builder : & B ) -> u64 {
@@ -28,25 +30,21 @@ fn create_string(len: usize) -> String {
2830fn compare_ahash ( c : & mut Criterion ) {
2931 let builder = RandomState :: new ( ) ;
3032 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 ] {
3234 let name = "string" . to_owned ( ) + & num. to_string ( ) ;
3335 let string = create_string ( * num) ;
3436 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) ) ) ;
3838 } ) ;
3939 }
4040}
4141
4242fn 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 ] {
4444 let name = "string" . to_owned ( ) + & num. to_string ( ) ;
4545 let string = create_string ( * num) ;
4646 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) ) ) ;
5048 } ) ;
5149 }
5250}
@@ -117,7 +115,7 @@ fn compare_wyhash(c: &mut Criterion) {
117115fn compare_xxhash ( c : & mut Criterion ) {
118116 let int: u64 = 1234 ;
119117 let string = create_string ( 1024 ) ;
120- let builder = twox_hash :: RandomXxHashBuilder64 :: default ( ) ;
118+ let builder = Xxh3Builder :: default ( ) ;
121119 compare_other ( c, "compare_xxhash" , builder)
122120}
123121
0 commit comments