12 个版本
0.6.0 | 2023 年 7 月 26 日 |
---|---|
0.5.9 | 2021 年 1 月 13 日 |
0.5.8 | 2020 年 11 月 24 日 |
0.5.5 | 2020 年 7 月 13 日 |
0.2.0 | 2018 年 1 月 6 日 |
#4 在 #最小
2,651 每月下载量
在 8 个包中使用了 (2 直接)
76KB
2K SLoC
Rust 中的快速且可扩展的最低成本完美哈希函数
对 针对大规模键集的快速且可扩展的最小完美哈希 的 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 查询和多线程读写访问。
依赖项
~96–600KB
~12K SLoC