13 个稳定版本
1.6.3 | 2022 年 5 月 4 日 |
---|---|
1.6.2 | 2021 年 12 月 25 日 |
1.6.1 | 2021 年 8 月 5 日 |
1.6.0 | 2020 年 10 月 15 日 |
0.1.1 | 2015 年 7 月 20 日 |
在 算法 中排名第 6
每月下载量 2,405,245
用于 1,907 个 包(180 个直接使用)
105KB
2.5K SLoC
TwoX-Hash
XXHash 算法的 Rust 实现。
示例
使用固定种子
use std::hash::BuildHasherDefault;
use std::collections::HashMap;
use twox_hash::XxHash64;
let mut hash: HashMap<_, _, BuildHasherDefault<XxHash64>> = Default::default();
hash.insert(42, "the answer");
assert_eq!(hash.get(&42), Some(&"the answer"));
使用随机种子
use std::collections::HashMap;
use twox_hash::RandomXxHashBuilder64;
let mut hash: HashMap<_, _, RandomXxHashBuilder64> = Default::default();
hash.insert(42, "the answer");
assert_eq!(hash.get(&42), Some(&"the answer"));
基准测试
64 位
字节 | SipHasher (MB/s) | XXHash (MB/s) | 比例 |
---|---|---|---|
1 | 52 | 38 | 73% |
4 | 210 | 148 | 70% |
16 | 615 | 615 | 100% |
32 | 914 | 1391 | 152% |
128 | 1347 | 3657 | 271% |
256 | 1414 | 5019 | 355% |
512 | 1546 | 6168 | 399% |
1024 | 1565 | 6206 | 397% |
1048576 | 1592 | 7564 | 475% |
字节 | FnvHasher (MB/s) | XXHash (MB/s) | 比例 |
---|---|---|---|
1 | 1000 | 38 | 4% |
4 | 800 | 148 | 19% |
16 | 761 | 615 | 81% |
32 | 761 | 1391 | 183% |
128 | 727 | 3657 | 503% |
256 | 759 | 5019 | 661% |
512 | 745 | 6168 | 828% |
1024 | 741 | 6206 | 838% |
1048576 | 745 | 7564 | 1015% |
32 位
字节 | SipHasher (MB/s) | XXHash32 (MB/s) | 比例 |
---|---|---|---|
1 | 52 | 55 | 106% |
4 | 210 | 210 | 100% |
16 | 615 | 1230 | 200% |
32 | 914 | 1882 | 206% |
128 | 1347 | 3282 | 244% |
256 | 1414 | 3459 | 245% |
512 | 1546 | 3792 | 245% |
1024 | 1565 | 3938 | 252% |
1048576 | 1592 | 4127 | 259% |
字节 | FnvHasher (MB/s) | XXHash32 (MB/s) | 比例 |
---|---|---|---|
1 | 1000 | 55 | 6% |
4 | 800 | 210 | 26% |
16 | 761 | 1230 | 162% |
32 | 761 | 1882 | 247% |
128 | 727 | 3282 | 451% |
256 | 759 | 3459 | 456% |
512 | 745 | 3792 | 509% |
1024 | 741 | 3938 | 531% |
1048576 | 745 | 4127 | 554% |
贡献
- 分支(https://github.com/shepmaster/twox-hash/fork)
- 创建你的功能分支(
git checkout -b my-new-feature
) - 添加失败的测试。
- 添加通过测试的代码。
- 提交你的更改(
git commit -am 'Add some feature'
) - 确保测试通过。
- 推送到分支(
git push origin my-new-feature
) - 创建新的 Pull Request
依赖
~40–340KB