2个不稳定版本
0.2.0 | 2023年6月19日 |
---|---|
0.1.2 | 2021年12月14日 |
#636 在 密码学
38,974 每月下载量
用于 21 个crate (10 直接)
17KB
296 代码行
Fastmurmur3
Murmur3是一种快速的非加密哈希函数。在我的测试中,fastmurmur3
是Murmur3最快的实现。
使用方法
let bytes: &[u8] = b"hello world";
let x: u128 = fastmurmur3::hash(bytes);
安装
cargo install fastmurmur3
基准测试
摘要
根据当前的基准测试
fastmurmur3
是最快的。xxh3_64
慢了1.66倍,并且只有64位值。xxh3_128
慢了2.50倍。fasthash
包含下一个最快的Murmur3实现,但仍然比fastmurmur3
慢4.47倍。
数据
fastmurmur3 time: [3.0878 ns 3.1215 ns 3.1619 ns]
xxhash_rust::xxh3_64 time: [5.1473 ns 5.1872 ns 5.2456 ns]
xxhash_rust::xxh3_128 time: [7.8066 ns 7.8271 ns 7.8499 ns]
fasthash time: [13.909 ns 13.960 ns 14.018 ns]
murmur3c time: [14.529 ns 14.604 ns 14.684 ns]
murmur3 time: [26.084 ns 26.163 ns 26.249 ns]
twox_hash::Xxh3Hash64 time: [124.23 ns 126.46 ns 128.55 ns]
twox_hash::Xxh3Hash128 time: [134.62 ns 136.75 ns 138.77 ns]
sha1 time: [209.55 ns 211.71 ns 214.88 ns]
基准测试未来工作
-
这些基准测试是在有限输入集和有限种子集上运行的。在确定性地声称
fastmurmur3
是最快的非加密哈希函数之前,需要运行更广泛的基准测试。 -
我不确定这些基准测试是否因为链接(即Rust函数被完全内联,而C实现因为链接算法而保持为独立的fn调用)而不公平于参考C实现。
-
除了速度,这些基准测试还可以测量与其他算法(如
xxhash
等)的比较中的其他哈希属性,如抗碰撞性。 -
有一个很棒的基准测试图表会很好。
-
我想了解是否有我可以采取的步骤来使基准测试更具可重复性(例如,设置进程优先级,如果遇到内存竞争则失败等)。
-
我想改进基准测试的输出,并将其抽象为更好的比较工具。目前,cargo bench和cargo criterion是为跟踪项目随时间推移的性能而构建的。我希望有一个更好的库来比较基准组内的性能。
正确性
fastmurmur3
的测试与C实现进行了模糊测试。
贡献
贡献使得开源社区成为一个如此美妙的学习、灵感和创造的地方。你做出的任何贡献都备受赞赏。
如果你有改进这个项目的建议,请Fork仓库并创建一个Pull Request。你也可以简单地创建一个带有“增强”标签的问题。别忘了给项目点个赞!再次感谢!
- Fork项目
- 创建你的功能分支 (
git checkout -b feature/AmazingFeature
) - 提交您的更改 (
git commit -m '添加一些令人惊叹的功能'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开拉取请求