Module fasthash::murmur
[−]
[src]
Murmur, a suite of non-cryptographic hash functions that was used for hash-based lookups.
by Austin Appleby (aappleby (AT) gmail)
https://sites.google.com/site/murmurhash/
Extremely simple - compiles down to ~52 instructions on x86.
Excellent distribution - Passes chi-squared tests for practically all keysets & bucket sizes.
Excellent avalanche behavior - Maximum bias is under 0.5%.
Excellent collision resistance - Passes Bob Jenkin's frog.c torture-test. No collisions possible for 4-byte keys, no small (1- to 7-bit) differentials.
Excellent performance - measured on an Intel Core 2 Duo @ 2.4 ghz
- OneAtATime - 354.163715 mb/sec
- FNV - 443.668038 mb/sec
- SuperFastHash - 985.335173 mb/sec
- lookup3 - 988.080652 mb/sec
- MurmurHash 1.0 - 1363.293480 mb/sec
- MurmurHash 2.0 - 2056.885653 mb/sec
Example
use std::hash::{Hash, Hasher}; use fasthash::{murmur, MurmurHasher}; fn hash<T: Hash>(t: &T) -> u64 { let mut s: MurmurHasher = Default::default(); t.hash(&mut s); s.finish() } let h = murmur::hash32(b"hello world\xff"); assert_eq!(h, hash(&"hello world") as u32);
Structs
Murmur |
MurmurHash 32-bit hash functions |
MurmurAligned |
MurmurHash 32-bit aligned hash functions |
MurmurAlignedHasher |
An implementation of |
MurmurHasher |
An implementation of |
Functions
hash32 |
MurmurHash 32-bit hash functions for a byte array. |
hash32_aligned |
MurmurHash 32-bit aligned hash functions for a byte array. |
hash32_aligned_with_seed |
MurmurHash 32-bit aligned hash function for a byte array. For convenience, a 32-bit seed is also hashed into the result. |
hash32_with_seed |
MurmurHash 32-bit hash function for a byte array. For convenience, a 32-bit seed is also hashed into the result. |