#xx-hash #hasher #hash #xxh3

无 std bin+lib twox-hash

XXHash 和 XXH3 算法的 Rust 实现

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

Download history 491159/week @ 2024-03-29 483903/week @ 2024-04-05 506389/week @ 2024-04-12 516615/week @ 2024-04-19 470526/week @ 2024-04-26 450809/week @ 2024-05-03 492415/week @ 2024-05-10 479677/week @ 2024-05-17 494315/week @ 2024-05-24 594321/week @ 2024-05-31 604094/week @ 2024-06-07 552256/week @ 2024-06-14 620596/week @ 2024-06-21 582146/week @ 2024-06-28 599872/week @ 2024-07-05 502912/week @ 2024-07-12

每月下载量 2,405,245
用于 1,907 包(180 个直接使用)

MIT 许可协议

105KB
2.5K SLoC

TwoX-Hash

XXHash 算法的 Rust 实现。

Build Status Current Version

文档

示例

使用固定种子

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%

贡献

  1. 分支(https://github.com/shepmaster/twox-hash/fork
  2. 创建你的功能分支(git checkout -b my-new-feature
  3. 添加失败的测试。
  4. 添加通过测试的代码。
  5. 提交你的更改(git commit -am 'Add some feature'
  6. 确保测试通过。
  7. 推送到分支(git push origin my-new-feature
  8. 创建新的 Pull Request

依赖

~40–340KB