| { | ||
| "git": { | ||
| "sha1": "3f908902a9428c185ca333855e20b9385af7cce4" | ||
| "sha1": "545a200b43fee2404c812d5d5c05c2734fb790bd" | ||
| }, | ||
| "path_in_vcs": "" | ||
| } |
+5
-2
@@ -16,3 +16,3 @@ # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO | ||
| name = "ahash" | ||
| version = "0.8.9" | ||
| version = "0.8.10" | ||
| authors = ["Tom Kaitchuck <Tom.Kaitchuck@gmail.com>"] | ||
@@ -124,3 +124,3 @@ build = "./build.rs" | ||
| [dev-dependencies.hashbrown] | ||
| version = "0.12.3" | ||
| version = "0.14.3" | ||
@@ -133,2 +133,5 @@ [dev-dependencies.hex] | ||
| [dev-dependencies.pcg-mwc] | ||
| version = "0.2.1" | ||
| [dev-dependencies.rand] | ||
@@ -135,0 +138,0 @@ version = "0.8.5" |
+1
-0
@@ -255,2 +255,3 @@ use crate::convert::*; | ||
| self.buffer = folded_multiply(i ^ self.buffer, MULTIPLE); | ||
| self.pad = self.pad.wrapping_add(i); | ||
| } | ||
@@ -257,0 +258,0 @@ |
@@ -240,2 +240,3 @@ use crate::convert::*; | ||
| self.buffer = folded_multiply(i ^ self.buffer, MULTIPLE); | ||
| self.pad = self.pad.wrapping_add(i); | ||
| } | ||
@@ -345,3 +346,2 @@ | ||
| mod tests { | ||
| use crate::convert::Convert; | ||
| use crate::fallback_hash::*; | ||
@@ -348,0 +348,0 @@ |
+0
-1
@@ -322,3 +322,2 @@ //! AHash is a high performance keyed hash function. | ||
| use std::collections::HashMap; | ||
| use std::hash::Hash; | ||
@@ -325,0 +324,0 @@ #[test] |
@@ -187,3 +187,2 @@ use crate::convert::*; | ||
| use super::*; | ||
| use crate::convert::Convert; | ||
@@ -190,0 +189,0 @@ // This is code to search for the shuffle constant |
+50
-0
@@ -228,3 +228,53 @@ #![cfg_attr(feature = "specialize", feature(build_hasher_simple_hash_one))] | ||
| #[cfg(feature = "std")] | ||
| #[test] | ||
| fn test_byte_dist() { | ||
| use rand::{SeedableRng, Rng, RngCore}; | ||
| use pcg_mwc::Mwc256XXA64; | ||
| let mut r = Mwc256XXA64::seed_from_u64(0xe786_c22b_119c_1479); | ||
| let mut lowest = 2.541; | ||
| let mut highest = 2.541; | ||
| for _round in 0..100 { | ||
| let mut table: [bool; 256 * 8] = [false; 256 * 8]; | ||
| let hasher = RandomState::with_seeds(r.gen(), r.gen(), r.gen(), r.gen()); | ||
| for i in 0..128 { | ||
| let mut keys: [u8; 8] = hasher.hash_one(i as u64).to_ne_bytes(); | ||
| //let mut keys = r.next_u64().to_ne_bytes(); //This is a control to test assert sensitivity. | ||
| for idx in 0..8 { | ||
| while table[idx * 256 + keys[idx] as usize] { | ||
| keys[idx] = keys[idx].wrapping_add(1); | ||
| } | ||
| table[idx * 256 + keys[idx] as usize] = true; | ||
| } | ||
| } | ||
| for idx in 0..8 { | ||
| let mut len = 0; | ||
| let mut total_len = 0; | ||
| let mut num_seq = 0; | ||
| for i in 0..256 { | ||
| if table[idx * 256 + i] { | ||
| len += 1; | ||
| } else if len != 0 { | ||
| num_seq += 1; | ||
| total_len += len; | ||
| len = 0; | ||
| } | ||
| } | ||
| let mean = total_len as f32 / num_seq as f32; | ||
| println!("Mean sequence length = {}", mean); | ||
| if mean > highest { | ||
| highest = mean; | ||
| } | ||
| if mean < lowest { | ||
| lowest = mean; | ||
| } | ||
| } | ||
| } | ||
| assert!(lowest > 1.9, "Lowest = {}", lowest); | ||
| assert!(highest < 3.9, "Highest = {}", highest); | ||
| } | ||
| fn ahash_vec<H: Hash>(b: &Vec<H>) -> u64 { | ||
@@ -231,0 +281,0 @@ let mut total: u64 = 0; |
Sorry, the diff of this file is not supported yet