示例#1
0
        public void VerifyMurmurHash()
        {
            var hFunc = new MurmurHash3_x86_32();
            var x = VerificationTest(hFunc, 32, 0xB0F57EE3, true); // For MurmurHash3_x86_32
            Assert.IsTrue(x);

            var hFunc128 = new MurmurHash3_x64_128();
            var y = VerificationTest(hFunc128, 128, 0x6384BA69, true); // For MurmurHash3_x64_128
            Assert.IsTrue(y);
        }
示例#2
0
        public static ICollection<IHashFunc> DefaultHashFuncs(int num = 5)
        {
            var hList = new List<IHashFunc>();
            for (var i = 0; i < num; ++i)
            {
                var mmh = new MurmurHash3_x86_32();
                mmh.Seed = (uint)i;
                hList.Add(mmh);
            }

            return hList;
        }
示例#3
0
文件: Program.cs 项目: sinhpham/ASync
        static double StressTestBFEstimator(int size, int changedPer)
        {
            var clientDic = DataGen.Gen(size, 0).ToDictionary(currItem => currItem.Key, currItem => currItem.Value);
            var serverDic = DataGen.Gen(size, changedPer).ToDictionary(currItem => currItem.Key, currItem => currItem.Value);

            var _bffile = new MemoryStream();

            KeyValSync.ClientGenBfFile(clientDic, clientDic.Count, _bffile);
            _bffile.Position = 0;

            var bf = Serializer.Deserialize<BloomFilter>(_bffile);

            bf.SetHashFunctions(BloomFilter.DefaultHashFuncs());

            var hitNum = 0;
            var hFunc = new MurmurHash3_x86_32();

            foreach (var item in serverDic)
            {
                var block = item.Key + "-" + item.Value;
                var bBlock = Helper.GetBytes(block);

                var hv = hFunc.ComputeHash(bBlock);
                if (!bf.Contains(hv))
                {

                }
                else
                {
                    hitNum++;
                }
            }

            var estimatedD0 = Helper.EstimateD0(bf.Count, serverDic.Count, hitNum, bf) + 20;
            var realD0 = changedPer * size / 100 * 1.5;
            var diff = (double)estimatedD0 / realD0;
            return diff;
        }