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

farmhash

Farmhash is a successor to Cityhash (also from Google). Farmhash, like Cityhash before it, use ideas from Austin Appleby's MurmurHash.

6 stable releases

Uses old Rust 2015

1.1.5 Mar 20, 2016
1.1.4 Sep 2, 2015
1.1.2 Jul 15, 2015
1.1.0 Jul 13, 2015

#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 downloads per month
Used in 13 crates (12 directly)

MIT license

2MB
982 lines

rust-farmhash

Port of Google's Farmhash version 1.1 to pure Rust

For more on Farmhash see https://code.google.com/p/farmhash/

Farmhash is a successor to Cityhash (also from Google). Farmhash, like Cityhash before it, use ideas from Austin Appleby's MurmurHash.

Example usage

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

Benchmarks

Tested on /usr/share/dict/web2 on Mac OSX

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

Note

Since FarmHash is not a streaming hash. It is recommended to use the function hash64 or hash32 directly. Using the hasher interface will give you a different result if you write the same bytearray in chunks before calling finish.

No runtime deps