3 个版本

0.1.2 2020年5月28日
0.1.1 2019年4月5日
0.1.0 2019年4月3日

数据结构 中排名 2127

MIT 许可证

11KB
92

flit

BloomFilter 是一种概率性数据结构,可以快速且确定地断定它不包含一个项。另一方面,它只能断定它 可能 包含一个项,即数据结构具有大于 0% 的固有误报率。

可以往 Bloom 过滤器中添加项,但不能删除 - 这会引入误报情况。如果需要,可能需要使用计数 Bloom 过滤器(本软件包中尚未实现)作为替代。

此实现基于 Rust 对 xxHash 哈希算法 的实现,twox-hash

参考资料

示例

use flit::BloomFilter;

let mut filter = BloomFilter::new(0.01, 10000);
filter.add(&"Hello, world!");

assert_eq!(filter.might_contain(&"Hello, world!"), true); // probably true
assert_eq!(filter.might_contain(&"Dogs are cool!"), false); // definitely false!

基准测试

基准测试使用 criterion 进行。

提供了添加 100、1000 和 10000 个 u32 到 BloomFilter 中的简单基准测试。要运行基准测试,请运行

cargo bench

add 100                 time:   [22.454 us 22.477 us 22.507 us]
add 1000                time:   [224.44 us 224.65 us 224.90 us]
add 10000               time:   [2.2424 ms 2.2443 ms 2.2463 ms]

依赖项

~1MB
~24K SLoC