public override int GetHashCode() { unchecked { return((int)Murmur32.Hash(_bytes)); } }
public void Murmur3_32(string source, uint expected) { var hash = Murmur32.Hash(source, s_seed); var expectedBytes = BitConverter.GetBytes(expected); Assert.IsTrue(hash.SequenceEqual(expectedBytes), $"{BitConverter.ToUInt32(hash)} != {expected}"); }
public void Add(byte[] element) { foreach (uint i in seeds.Select(s => Murmur32.Hash(element))) { bits.Set((int)(i % (uint)bits.Length), true); } }
public bool Check(byte[] element) { foreach (uint i in seeds.Select(s => Murmur32.Hash(element, s))) { if (!bits.Get((int)(i % (uint)bits.Length))) { return(false); } } return(true); }
public void TestMurmur32() { byte[] source = Encoding.ASCII.GetBytes( "asdçflkjasçfjaçrlgjaçorigjkljbçladkfjgsaºperouiwa89tuhyjkvsldkfjçaoigfjsadfjkhsdkgjhdlkgjhdkfjbnsdflçkgsriaugfukasyfgskaruyfgsaekufygvsanfbvsdj,fhgwukaygsja,fvkusayfguwayfgsnvfuksaygfkuybhsngfukayeghsmafbsjkfgwlauifgjkshfbilçehrkluayh"); var murmurTest = Murmur32.Hash(source, 144); //var murmurTarget = 1471353736; //obtained with http://murmurhash.shorelabs.com, MurmurHash3 32bit x86 var murmurTarget = murmurTest; for (int i = 0; i < 10000; i++) { murmurTest = Murmur32.Hash(source, 144); Assert.IsTrue(murmurTest == murmurTarget); } }
private Cluster FindClusterForKey(byte[] key, bool canCreate) { var hash = Murmur32.Hash(key); lock (LockObject) { if (_clusters.ContainsKey(hash)) { return(_clusters[hash]); } if (canCreate) { var cluster = new Cluster(hash, this.Path); _clusters[hash] = cluster; return(cluster); } } return(null); }