Rust语言bloom_filter包(布隆过滤器)
在https://crates.io中查看
测试用例
use bloom_filter_plus::*;
fn main() {
// test 1
let mut filter = BloomFilter::new();
filter.insert("key");
assert_eq!(true, filter.contains("key"));
assert_eq!(false, filter.contains("key1"));
// test2
let mut filter2 = BloomFilter::new().set_size(10).set_hash_loop(20);
filter2.insert("key");
filter2.debug();
assert_eq!(true, filter2.contains("key"));
assert_eq!(false, filter2.contains("key1"));
}
Go版本基准测试
查看Go版本实现
Insert:
goos: darwin
goarch: amd64
pkg: github.com/t924417424/BloomFilter
cpu: Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz
Benchmark_Insert-4 976336 1075 ns/op 160 B/op 1 allocs/op
PASS
ok github.com/t924417424/BloomFilter 1.505s
Contains:
goos: darwin
goarch: amd64
pkg: github.com/t924417424/BloomFilter
cpu: Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz
Benchmark_Contains-4 1000000 1054 ns/op 160 B/op 1 allocs/op
PASS
ok github.com/t924417424/BloomFilter 1.169s
Ext Link: https://crates.io/crates/bloom_filter_plus
1
共 5 条评论, 1 页
评论区
写评论我也改一下
--
👇
hscspring: 很喜欢这个API:
--
👇
Neutron3529: ``` BloomFilter::new(BloomConfig { size: Some(DEFAULT_SIZE), hash_loop: Some(20), });
BloomFilter::new() .size(DEFAULT_SIZE) .hash_loop(20);
BloomFilter::Config() .size(DEFAULT_SIZE) .hash_loop(20) .new();
受教了
--
👇
Neutron3529: ``` BloomFilter::new(BloomConfig { size: Some(DEFAULT_SIZE), hash_loop: Some(20), });
BloomFilter::new() .size(DEFAULT_SIZE) .hash_loop(20);
BloomFilter::Config() .size(DEFAULT_SIZE) .hash_loop(20) .new();
这个招数是我从这里学的,学艺不精,并不会制作这样的API
我只会
demo如下:
输出:
👇
hscspring: 很喜欢这个API:
--
👇
Neutron3529: ``` BloomFilter::new(BloomConfig { size: Some(DEFAULT_SIZE), hash_loop: Some(20), });
BloomFilter::new() .size(DEFAULT_SIZE) .hash_loop(20);
BloomFilter::Config() .size(DEFAULT_SIZE) .hash_loop(20) .new();
很喜欢这个API:
--
👇
Neutron3529: ``` BloomFilter::new(BloomConfig { size: Some(DEFAULT_SIZE), hash_loop: Some(20), });
BloomFilter::new() .size(DEFAULT_SIZE) .hash_loop(20);
BloomFilter::Config() .size(DEFAULT_SIZE) .hash_loop(20) .new();
这个语法略丑
据传,一个优雅的写法是:
或者,一个更好实现的版本:
直接上
Some()
有点丑