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#最小

Download history 304/week @ 2024-04-23 318/week @ 2024-04-30 273/week @ 2024-05-07 296/week @ 2024-05-14 428/week @ 2024-05-21 281/week @ 2024-05-28 326/week @ 2024-06-04 306/week @ 2024-06-11 308/week @ 2024-06-18 369/week @ 2024-06-25 201/week @ 2024-07-02 166/week @ 2024-07-09 376/week @ 2024-07-16 453/week @ 2024-07-23 1375/week @ 2024-07-30 407/week @ 2024-08-06

2,651 每月下载量
8 个包中使用了 (2 直接)

MIT 许可证

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