MurmurHash: Difference between revisions
m Notability is non-nonsensical in this context, Hadoop's does not look like it is easy to reuse, it also looks like it is based on Derek Young's instead of a straight port of the original |
|||
Line 8: | Line 8: | ||
The canonical implementations are in [[C++]], but there are efficient ports for a variety of popular languages, including [[Python (programming language)|Python]]<ref>[http://code.google.com/p/pyfasthash/ pyfasthash in Python]</ref>, [[C Sharp (programming language)|C#]]<ref>[http://landman-code.blogspot.com/2009/02/c-superfasthash-and-murmurhash2.html Davy Landman in C#]</ref>, [[Perl]]<ref>[http://search.cpan.org/~tmaesaka/Digest-MurmurHash-0.10/lib/Digest/MurmurHash.pm Toru Maesaka in Perl]</ref>, [[Ruby (programming language)|Ruby]]<ref>http://rubyforge.org/projects/murmurhash Jeff Hodges |
The canonical implementations are in [[C++]], but there are efficient ports for a variety of popular languages, including [[Python (programming language)|Python]]<ref>[http://code.google.com/p/pyfasthash/ pyfasthash in Python]</ref>, [[C Sharp (programming language)|C#]]<ref>[http://landman-code.blogspot.com/2009/02/c-superfasthash-and-murmurhash2.html Davy Landman in C#]</ref>, [[Perl]]<ref>[http://search.cpan.org/~tmaesaka/Digest-MurmurHash-0.10/lib/Digest/MurmurHash.pm Toru Maesaka in Perl]</ref>, [[Ruby (programming language)|Ruby]]<ref>http://rubyforge.org/projects/murmurhash Jeff Hodges |
||
in Ruby</ref>, [[Haskell (programming language)|Haskell]]<ref>[http://hackage.haskell.org/package/murmur-hash]</ref>, and [[Java (programming language)|Java]]<ref |
in Ruby</ref>, [[Haskell (programming language)|Haskell]]<ref>[http://hackage.haskell.org/package/murmur-hash]</ref>, and [[Java (programming language)|Java]]<ref>[http://dmy999.com/article/50/murmurhash-2-java-port Derek Young in Java], public domain</ref>. |
||
It has been adopted into a number of open-source projects, most notably libmemcached<ref>[http://tangent.org/552/libmemcached.html libmemcached]</ref> (the [[C (programming language)|C]] driver for [[Memcached]]), maatkit<ref>[http://code.google.com/p/maatkit/source/detail?r=3273 maatkit]</ref>, and [[Hadoop]]<ref name="Hadoop"/>. |
It has been adopted into a number of open-source projects, most notably libmemcached<ref>[http://tangent.org/552/libmemcached.html libmemcached]</ref> (the [[C (programming language)|C]] driver for [[Memcached]]), maatkit<ref>[http://code.google.com/p/maatkit/source/detail?r=3273 maatkit]</ref>, and [[Hadoop]]<ref name="Hadoop"/>. |
Revision as of 10:02, 21 August 2010
MurmurHash is a non-cryptographic hash function suitable for general hash-based lookup.[1][2][3] It was created by Austin Appleby,[4] and exists 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[5], C#[6], Perl[7], Ruby[8], Haskell[9], and Java[10].
It has been adopted into a number of open-source projects, most notably libmemcached[11] (the C driver for Memcached), maatkit[12], and Hadoop[1].
References
- ^ a b Hadoop in Java
- ^ Chouza et al.
- ^ Coceiro et al.
- ^ MurmurHash on GooglePages
- ^ pyfasthash in Python
- ^ Davy Landman in C#
- ^ Toru Maesaka in Perl
- ^ http://rubyforge.org/projects/murmurhash Jeff Hodges in Ruby
- ^ [1]
- ^ Derek Young in Java, public domain
- ^ libmemcached
- ^ maatkit