跳到主要内容

布隆过滤器参数计算器

根据预期的项目数量和目标假阳性率,计算布隆过滤器的最优位数组大小和哈希函数数量。获得精确的内存分解(位、字节、KB/MB/GB)和假阳性率对内存的折衷图表。

输入

您计划插入过滤器的项目数量。

从未插入的项目被错误地报告为存在的概率。较低意味着精度更高,但需要更多内存。

输出

最优布隆过滤器参数

结果
MetricValue
No data yet
内存与目标假阳性率(在此n处)

输入n和目标假阳性率以查看内存折衷。

Chart (SVG source)
 
m = ceil(-n·ln(p) / (ln 2)²)且k = round((m/n)·ln 2),标准最优参数公式。由于m和k舍入到整数,这些整数处的实际假阳性率单独报告,与您输入的目标不同——它们通常非常接近,但很少相同。所有内容都在浏览器中运行——您输入的任何内容都不会发送到任何地方。
这对您有帮助吗?

使用指南

从两个真正驱动其行为的数字获取布隆过滤器的最优位数组大小和哈希函数数量——您预期要插入多少项目,以及您愿意接受多少假阳性噪音。

使用方法

  1. 输入您计划插入过滤器的预期项目数(n)
  2. 目标假阳性率滑块拖到所需的准确度——较低意味着假阳性较少,但位数组较大。
  3. 阅读位数组大小(m)哈希函数数(k)所需内存,以及显示在相同n处紧缩假阳性率时内存如何扩展的图表。

公式

  • 位数组大小: m = ceil(-n · ln(p) / (ln 2)²)
  • 哈希函数数: k = round((m / n) · ln 2),最小值为1

这些是所有主流布隆过滤器实现(Guava、Redis的BF.RESERVEpybloom)使用的标准最优参数推导。由于mk舍入到整数,计算器还报告这些舍入值处的实际假阳性率——使用标准估计(1 - e^(-kn/m))^k——因为它很少与您输入的目标相同。

阅读图表

该图表在您输入的n处针对假阳性率的对数刻度绘制所需内存与目标假阳性率。由于m-ln(p)中是线性的,而x轴是-log₁₀(p),折衷是直线而不是曲线——将假阳性率紧缩一个数量级会导致内存的相应且可预测的增加。您的当前设置用红点标记。

限制

这将标准(非计数、不可扩展)布隆过滤器的大小,并假设理想的哈希族——具有相关位的真实哈希函数会略微偏离理论假阳性率。它没有考虑特定语言/库的每位开销(某些实现将m舍入到2的幂或机器字的倍数以加快索引),因此将此处的m/内存视为理论最小值,而不是库将进行的确切分配。

隐私

所有内容都在浏览器中运行——您输入的任何内容都不会发送到任何地方。

相关工具

如果您需要布隆过滤器存储密钥(或任何其他内容)的哈希,请参阅哈希生成器。对过滤器进行调整后,如果您在缓存前面使用过滤器,缓存TTL计算器可帮助您确定其条目的生命周期。

bit array size calculatorhash function countfalse positive rate calculatorprobabilistic data structureset membership testspace efficient seturl deduplication filtercache admission filterdistributed database filter sizingmemory usage estimator

在代码中使用

REST API

curl -X POST https://api.iotools.cloud/v1/tool/bloom-filter-parameter-calculator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "n": "10000",
    "targetFpRate": "1"
  }'

替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。

让 AI 代理执行

Use the IOTools `bloom-filter-parameter-calculator` tool (Bloom Filter Parameter Calculator) on this input:

YOUR_INPUT_HERE

将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。

每次调用费用5 积分起

喜欢这些工具?去掉广告吧。

一次性付款即可永久移除您账户中的所有广告。无需订阅,不追踪。