1 个不稳定版本
0.1.0 | 2019 年 4 月 7 日 |
---|
#48 在 #重复
25KB
304 行
qht
Quotient Hash Tables 的 Rust 实现,这是一种合理高效的近似重复检测算法。 见此论文。
如何使用
extern crate qht;
extern crate rand;
use qht::*;
use rand::rngs::StdRng;
use rand::{FromEntropy, Rng};
fn main() {
// Creates a new quotient hash table with 1 bucket and a fingerpint size of 3
let mut f = QuotientHashTable::new(1024, 8, 3);
// Initialize PRNG
let mut rng = StdRng::from_entropy();
let mut measured_collisions = 0;
let mut actual_collisions = 0;
let mut elements : Vec<u64> = Vec::with_capacity(1000);
for _ in 0..10000 {
// We generate a random element
let element = rng.gen_range(0, 1000);
// Check if it's in the Hash Table
if f.lookup(element) {
measured_collisions+=1;
} else {
// Insert it if it's not
f.insert(element);
}
// Check if the element has been generated
if elements.contains(&element) {
actual_collisions+=1;
} else {
// Record it if it's not
elements.push(element);
}
}
println!("Measured Collisions {}, Actual Collisions {} ", measured_collisions, actual_collisions);
}
运行测试
公共函数在其文档中进行了测试。其他杂项测试编写在 lib.rs
中。使用以下命令运行测试:
cargo test
运行基准测试
使用 Criterion
依赖项提供精确的基准测试。可以使用以下命令运行基准测试:
cargo bench
文档
使用以下命令生成文档:
cargo doc --no-deps
许可证
本项目采用 MIT 许可证 - 请参阅 LICENSE 文件以获取详细信息
依赖项
~0.6–0.8MB
~11K SLoC