Package io.split.client.utils
Class MurmurHash3
- java.lang.Object
-
- io.split.client.utils.MurmurHash3
-
public final class MurmurHash3 extends Object
The MurmurHash3 algorithm was created by Austin Appleby and placed in the public domain. This java port was authored by Yonik Seeley and also placed into the public domain. The author hereby disclaims copyright to this source code.This produces exactly the same hash values as the final C++ version of MurmurHash3 and is thus suitable for producing the same hash values across platforms.
The 32 bit x86 version of this hash should be the fastest variant for relatively short keys like ids. murmurhash3_x64_128 is a good choice for longer strings or if you need more than 32 bits of hash.
Note - The x86 and x64 versions do _not_ produce the same results, as the algorithms are optimized for their respective platforms.
See http://github.com/yonik/java_util for future updates to this file.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classMurmurHash3.LongPair128 bits of state
-
Constructor Summary
Constructors Constructor Description MurmurHash3()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static intfmix32(int h)static longfmix64(long k)static longgetLongLittleEndian(byte[] buf, int offset)Gets a long from a byte buffer in little endian byte order.static longmurmurhash3_x86_32(CharSequence data, int offset, int len, int seed)Returns the MurmurHash3_x86_32 hash of the UTF-8 bytes of the String without actually encoding the string to a temporary buffer.
-
-
-
Method Detail
-
fmix32
public static final int fmix32(int h)
-
fmix64
public static final long fmix64(long k)
-
getLongLittleEndian
public static final long getLongLittleEndian(byte[] buf, int offset)Gets a long from a byte buffer in little endian byte order.
-
murmurhash3_x86_32
public static long murmurhash3_x86_32(CharSequence data, int offset, int len, int seed)
Returns the MurmurHash3_x86_32 hash of the UTF-8 bytes of the String without actually encoding the string to a temporary buffer. This is more than 2x faster than hashing the result of String.getBytes().
-
-