#hashing #idea #cityhash #google #austin #murmur-hash #appleby

farmhash

Farmhash 是 Cityhash(也来自 Google)的继承者。Farmhash,就像之前的 Cityhash 一样,采用了 Austin Appleby 的 MurmurHash 的想法。

6 个稳定版本

使用旧的 Rust 2015

1.1.5 2016年3月20日
1.1.4 2015年9月2日
1.1.2 2015年7月15日
1.1.0 2015年7月13日

#5 in #idea

Download history 4139/week @ 2023-11-26 4182/week @ 2023-12-03 5482/week @ 2023-12-10 5299/week @ 2023-12-17 2009/week @ 2023-12-24 4046/week @ 2023-12-31 6084/week @ 2024-01-07 5212/week @ 2024-01-14 6463/week @ 2024-01-21 7331/week @ 2024-01-28 7661/week @ 2024-02-04 7561/week @ 2024-02-11 7802/week @ 2024-02-18 7486/week @ 2024-02-25 8179/week @ 2024-03-03 3752/week @ 2024-03-10

27,551 每月下载量
用于 13 个 crate(12 个直接使用)

MIT 许可证

2MB
982 行代码(不包括注释)

rust-farmhash

将 Google 的 Farmhash 版本 1.1 移植到纯 Rust

有关 Farmhash 的更多信息,请参阅 https://code.google.com/p/farmhash/

Farmhash 是 Cityhash(也来自 Google)的继承者。Farmhash,就像之前的 Cityhash 一样,采用了 Austin Appleby 的 MurmurHash 的想法。

示例用法

extern crate farmhash;

...

let value: &str = "hello world";
let res32 = farmhash::hash32(&value.as_bytes());
// res32 ==> 430397466
let res64 = farmhash::hash64(&value.as_bytes());
// res64 ==> 6381520714923946011

基准测试

在 Mac OSX 的 /usr/share/dict/web2 上进行测试

farmhash: required 0.06485s with 0/235887 collisions
fnv:      required 0.12042s with 1/235887 collisions
siphash:  required 0.23546s with 0/235887 collisions

注意

由于 FarmHash 不是一个流式哈希,建议直接使用 hash64 或 hash32 函数。如果在调用 finish 之前将 bytearray 分块写入,使用 hasher 接口将得到不同的结果。

无运行时依赖