Bloom 滤波器 False Positive模拟器 工具列表
交互式模拟器

Bloom 滤波器 False Positive模拟器

通过位占用、误判率曲线和最优哈希数图,在内存与精度之间取平衡。

参数输入
插入元素数 n
item

插入过滤器的元素数量。

位数组大小 m
bit

位数组长度。

哈希数 k
-

每个元素使用的哈希函数数。

查询数
query

估算误命中所用查询次数。

计算结果
误判率
位占用率
最优哈希数
期望误命中
位数组占用
误判率曲线
哈希数敏感性
物理模型与主要公式

$$p=\left(1-e^{-kn/m}\right)^k,\quad k_{opt}=\frac{m}{n}\ln 2$$

Bloom过滤器不会产生假阴性,但允许假阳性。若需要删除或计数,应考虑Counting Bloom filter等变体。

如何解读

位数组图显示插入元素越多,占用率越高。

误判率曲线显示增加内存的效果。

哈希数图显示过少或过多都会变差。

通过对话理解Bloom 滤波器 False Positive

🙋
看Bloom 滤波器 False Positive时,应该先看哪里?调整插入元素数 n后,图和数值都会变化,有点不好判断。
🎓
先看误判率,但不要只看数字。用位数组占用确认前提形状或状态,再用误判率曲线看分布和变化方式。位数组图显示插入元素越多,占用率越高。
🙋
插入元素数 n变大时误判率会变化,这比较直观。那位数组大小 m的影响要怎么读?
🎓
逐步调整位数组大小 m并观察位占用率,就能看出哪个因素在控制结果。Bloom过滤器不会产生假阴性,但允许假阳性。若需要删除或计数,应考虑Counting Bloom filter等变体。 不要只算一个点,要在实际可能波动的范围内来回检查。
🙋
哈希数敏感性主要用来做什么?只看普通曲线不够吗?
🎓
哈希数敏感性用来找危险边界,以及余量突然变小的输入组合。误判率曲线显示增加内存的效果。 例如缓存存在性判断的内存设计时,比单点结果更重要的是条件稍微偏离后会怎样。
🙋
如果误判率满足要求,就可以直接采用这个条件吗?
🎓
这里适合作为初步判断。它对重复检查或URL集合判断的误判估计和位数和哈希数初始设置有帮助,但最终判断仍要结合标准、实测值、详细分析和厂家条件。哈希数图显示过少或过多都会变差。

实际使用

缓存存在性判断的内存设计。

重复检查或URL集合判断的误判估计。

位数和哈希数初始设置。

常见问题

先看误判率和位占用率。然后用位数组占用确认前提状态,再用误判率曲线读取分布和偏差。位数组图显示插入元素越多,占用率越高。
先单独调整插入元素数 n,再以相近幅度调整位数组大小 m,比较误判率的变化。哈希数敏感性能显示哪些输入组合会让余量或性能快速变化。
适合用于缓存存在性判断的内存设计。不要只看单点数值,而应扩大输入范围,确认误判率是否仍有余量,再决定是否进入详细分析。
Bloom过滤器不会产生假阴性,但允许假阳性。若需要删除或计数,应考虑Counting Bloom filter等变体。最终判断仍需结合标准、实测值、详细分析和厂家条件。