1个不稳定版本
0.5.9+1 |
|
---|---|
0.5.9-0 | 2022年12月11日 |
#1185 in 算法
在mphf_benchmark中使用
68KB
1.5K SLoC
警告
这是由Piotr Beling稍微修改的(为基准测试目的)版本boomphf,由Patrick Marks编写。请使用原始版本而不是这个版本。
Rust中的快速和可扩展最低完美哈希函数
A Rust实现适用于大规模键集的快速和可扩展的最低完美哈希。
该库为可哈希对象集合生成最小完美哈希函数(MPHF)。此算法生成的MPHF消耗约3-6位/项。构造过程中的内存消耗是数据集大小和MPHF最终大小的很小倍数(< 2x)。注意,最小完美哈希函数仅对创建MPHF时使用的集合中的对象返回可用的哈希值。哈希新对象将返回任意哈希值。如果您的用例可能导致哈希新值,您需要一个辅助方案来检测此条件。
见文档
示例用法
use boomphf::*;
// sample set of obejcts
let possible_objects = vec![1, 10, 1000, 23, 457, 856, 845, 124, 912];
let n = possible_objects.len();
// generate a minimal perfect hash function of these items
let phf = Mphf::new(1.7, possible_objects.clone(), None);
// Get hash value of all objects
let mut hashes = Vec::new();
for v in possible_objects {
hashes.push(phf.hash(&v));
}
hashes.sort();
// Expected hash output is set of all integers from 0..n
let expected_hashes: Vec<u64> = (0 .. n as u64).collect();
assert!(hashes == expected_hashes)
注意:此包自带位向量实现,以支持rank-select查询和多线程读写访问。
依赖项
~1.5MB
~32K SLoC