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/secFNV
- 443.668038 mb/secSuperFastHash
- 985.335173 mb/seclookup3
- 988.080652 mb/secMurmurHash
1.0 - 1363.293480 mb/secMurmurHash
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 |
|
MurmurAligned |
|
MurmurAlignedHasher |
An implementation of |
MurmurHasher |
An implementation of |
Functions
hash32 |
|
hash32_aligned |
|
hash32_aligned_with_seed |
|
hash32_with_seed |
|