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 std::hash::Hasher.

MurmurHasher

An implementation of std::hash::Hasher.

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.