我尝试插入大量的long来布隆过滤器并检查它们的错误率很低。构造函数向我保证插入数量的预期百分比,但在所有插入之后,新的预期百分比不同且非常高。
BloomFilter<Long> longBloomFilter = BloomFilter.create(Funnels.longFunnel(), 258112656, Math.pow(10, -8));
for (int i = 0; i < 258112656; i++) {
longBloomFilter.put((long) i);
}
System.out.println(longBloomFilter.expectedFpp());
打印0.17
我真的不相信,布隆过滤器可以提供如此大的错误率,但为什么前后的期望如此不同呢?
答案 0 :(得分:1)
我强烈怀疑你使用的是过时版的番石榴。当我使用Guava 18.0运行代码时,我得到1.001370499582369E-8
,这是一个非常合理的输出。