MurmurHash is a "a very fast, non-cryptographic hash suitable for general hash-based lookup"[1] created by Austin Appleby [2], which has been academically [3][4][5][6] and professionally [7] recognized as a notably useful algorithm. It comes in a number of variants, all of which have been released into the public domain.
Variants
The current version is MurmurHash2, which yields a 32-bit hash value and is optimized for Intel processors. Slower versions of MurmurHash2 are available for little-endian and aligned-only machines. The MurmurHash2A variant adds the Merkle-Damgard construction so that it can be called incrementally. There are two variants which generate 64-bit values; MurmurHash64A, which is optimized for 64-bit processors, and MurmurHash64B, for 32-bit ones. MurmurHash1 is obsolete.
Implementations
The canonical implementations are in C++, but there are efficient ports for a variety of popular languages, including Python[8], C#[9], Perl[10], Ruby[11], and Java[1].
It has been adopted into a number of open-source projects, most notably libmemcached[12] (the C driver for Memcached), maatkit[13], and Hadoop[1].
References
- ^ a b c Hadoop in Java
- ^ MurmurHash on GooglePages
- ^ How To Touch a Running System, Moritz Hammer
- ^ NIST
- ^ Chouza et al.
- ^ Coceiro et al.
- ^ Google SparseHash
- ^ py-fasthash in Python
- ^ Davy Landman in C#
- ^ Toru Maesaka in Perl
- ^ http://rubyforge.org/projects/murmurhash Jeff Hodges in Ruby
- ^ libmemcached
- ^ maatkit