Jump to content

MurmurHash: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Reverted 1 edit by Diablo-D3; Is it notable, though?. (TW)
Diablo-D3 (talk | contribs)
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 name="Hadoop"/>.
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

See also