| { | ||
| "git": { | ||
| "sha1": "545a200b43fee2404c812d5d5c05c2734fb790bd" | ||
| "sha1": "db36e4c4f0606b786bc617eefaffbe4ae9100762" | ||
| }, | ||
| "path_in_vcs": "" | ||
| } |
+4
-1
@@ -16,3 +16,3 @@ # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO | ||
| name = "ahash" | ||
| version = "0.8.10" | ||
| version = "0.8.11" | ||
| authors = ["Tom Kaitchuck <Tom.Kaitchuck@gmail.com>"] | ||
@@ -144,2 +144,5 @@ build = "./build.rs" | ||
| [dev-dependencies.smallvec] | ||
| version = "1.13.1" | ||
| [build-dependencies.version_check] | ||
@@ -146,0 +149,0 @@ version = "0.9.4" |
+1
-3
@@ -228,4 +228,3 @@ use crate::convert::*; | ||
| fn finish(&self) -> u64 { | ||
| let rot = (self.pad & 63) as u32; | ||
| self.buffer.rotate_left(rot) | ||
| folded_multiply(self.buffer, self.pad) | ||
| } | ||
@@ -256,3 +255,2 @@ | ||
| self.buffer = folded_multiply(i ^ self.buffer, MULTIPLE); | ||
| self.pad = self.pad.wrapping_add(i); | ||
| } | ||
@@ -259,0 +257,0 @@ |
@@ -59,4 +59,4 @@ use crate::convert::*; | ||
| AHasher { | ||
| buffer: rand_state.k0, | ||
| pad: rand_state.k1, | ||
| buffer: rand_state.k1, | ||
| pad: rand_state.k0, | ||
| extra_keys: [rand_state.k2, rand_state.k3], | ||
@@ -121,3 +121,3 @@ } | ||
| fn short_finish(&self) -> u64 { | ||
| self.buffer.wrapping_add(self.pad) | ||
| folded_multiply(self.buffer, self.pad) | ||
| } | ||
@@ -215,4 +215,4 @@ } | ||
| fn finish(&self) -> u64 { | ||
| let rot = (self.pad & 63) as u32; | ||
| self.buffer.rotate_left(rot) | ||
| folded_multiply(self.buffer, self.pad) | ||
| //self.buffer | ||
| } | ||
@@ -243,3 +243,2 @@ | ||
| self.buffer = folded_multiply(i ^ self.buffer, MULTIPLE); | ||
| self.pad = self.pad.wrapping_add(i); | ||
| } | ||
@@ -246,0 +245,0 @@ |
@@ -341,6 +341,8 @@ use core::hash::{Hash, Hasher}; | ||
| fn test_sparse<T: Hasher>(hasher: impl Fn() -> T) { | ||
| use smallvec::SmallVec; | ||
| let mut buf = [0u8; 256]; | ||
| let mut hashes = HashMap::new(); | ||
| for idx_1 in 0..256 { | ||
| for idx_2 in idx_1 + 1..256 { | ||
| for idx_1 in 0..255_u8 { | ||
| for idx_2 in idx_1 + 1..=255_u8 { | ||
| for value_1 in [1, 2, 4, 8, 16, 32, 64, 128] { | ||
@@ -351,9 +353,9 @@ for value_2 in [ | ||
| ] { | ||
| buf[idx_1] = value_1; | ||
| buf[idx_2] = value_2; | ||
| buf[idx_1 as usize] = value_1; | ||
| buf[idx_2 as usize] = value_2; | ||
| let hash_value = hash_with(&buf, &mut hasher()); | ||
| let keys = hashes.entry(hash_value).or_insert(Vec::new()); | ||
| keys.push((idx_1, value_1, idx_2, value_2)); | ||
| buf[idx_1] = 0; | ||
| buf[idx_2] = 0; | ||
| let keys = hashes.entry(hash_value).or_insert(SmallVec::<[[u8; 4]; 1]>::new()); | ||
| keys.push([idx_1, value_1, idx_2, value_2]); | ||
| buf[idx_1 as usize] = 0; | ||
| buf[idx_2 as usize] = 0; | ||
| } | ||
@@ -360,0 +362,0 @@ } |
@@ -473,4 +473,4 @@ use core::hash::Hash; | ||
| let mut hasher = AHasherU64 { | ||
| buffer: self.k0, | ||
| pad: self.k1, | ||
| buffer: self.k1, | ||
| pad: self.k0, | ||
| }; | ||
@@ -477,0 +477,0 @@ value.hash(&mut hasher); |
+1
-1
@@ -78,3 +78,3 @@ #![cfg_attr(feature = "specialize", feature(build_hasher_simple_hash_one))] | ||
| // Number of iterations per batch should be high enough to hide timing overhead. | ||
| let size = BatchSize::NumIterations(2_000); | ||
| let size = BatchSize::NumIterations(50_000); | ||
@@ -81,0 +81,0 @@ let mut rng = rand::thread_rng(); |
@@ -241,3 +241,3 @@ #![cfg_attr(feature = "specialize", feature(build_hasher_simple_hash_one))] | ||
| for i in 0..128 { | ||
| let mut keys: [u8; 8] = hasher.hash_one(i as u64).to_ne_bytes(); | ||
| let mut keys: [u8; 8] = hasher.hash_one((i as u64) << 30).to_ne_bytes(); | ||
| //let mut keys = r.next_u64().to_ne_bytes(); //This is a control to test assert sensitivity. | ||
@@ -244,0 +244,0 @@ for idx in 0..8 { |
Sorry, the diff of this file is not supported yet