Package com.google.common.hash
Class FarmHashFingerprint64
java.lang.Object
com.google.common.hash.AbstractHashFunction
com.google.common.hash.AbstractNonStreamingHashFunction
com.google.common.hash.FarmHashFingerprint64
- All Implemented Interfaces:
HashFunction
Implementation of FarmHash Fingerprint64, an open-source fingerprinting algorithm for strings.
Its speed is comparable to CityHash64, and its quality of hashing is at least as good.
Note to maintainers: This implementation relies on signed arithmetic being bit-wise equivalent to unsigned arithmetic in all cases except:
- comparisons (signed values can be negative)
- division (avoided here)
- shifting (right shift must be unsigned)
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final HashFunction
private static final long
private static final long
private static final long
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
bits()
Returns the number of bits (a multiple of 32) that each hash code produced by this hash function has.(package private) static long
fingerprint
(byte[] bytes, int offset, int length) hashBytes
(byte[] input, int off, int len) Shortcut fornewHasher().putBytes(input, off, len).hash()
.private static long
hashLength0to16
(byte[] bytes, int offset, int length) private static long
hashLength16
(long u, long v, long mul) private static long
hashLength17to32
(byte[] bytes, int offset, int length) private static long
hashLength33To64
(byte[] bytes, int offset, int length) private static long
hashLength65Plus
(byte[] bytes, int offset, int length) private static long
shiftMix
(long val) toString()
private static void
weakHashLength32WithSeeds
(byte[] bytes, int offset, long seedA, long seedB, long[] output) Computes intermediate hash of 32 bytes of byte array from the given offset.Methods inherited from class com.google.common.hash.AbstractNonStreamingHashFunction
hashBytes, hashInt, hashLong, hashString, hashUnencodedChars, newHasher, newHasher
Methods inherited from class com.google.common.hash.AbstractHashFunction
hashBytes, hashObject
-
Field Details
-
FARMHASH_FINGERPRINT_64
-
K0
private static final long K0- See Also:
-
K1
private static final long K1- See Also:
-
K2
private static final long K2- See Also:
-
-
Constructor Details
-
FarmHashFingerprint64
FarmHashFingerprint64()
-
-
Method Details
-
hashBytes
Description copied from interface:HashFunction
Shortcut fornewHasher().putBytes(input, off, len).hash()
. The implementation might perform better than its longhand equivalent, but should not perform worse.- Specified by:
hashBytes
in interfaceHashFunction
- Specified by:
hashBytes
in classAbstractNonStreamingHashFunction
-
bits
public int bits()Description copied from interface:HashFunction
Returns the number of bits (a multiple of 32) that each hash code produced by this hash function has. -
toString
-
fingerprint
static long fingerprint(byte[] bytes, int offset, int length) -
shiftMix
private static long shiftMix(long val) -
hashLength16
private static long hashLength16(long u, long v, long mul) -
weakHashLength32WithSeeds
private static void weakHashLength32WithSeeds(byte[] bytes, int offset, long seedA, long seedB, long[] output) Computes intermediate hash of 32 bytes of byte array from the given offset. Results are returned in the output array because when we last measured, this was 12% faster than allocating new arrays every time. -
hashLength0to16
private static long hashLength0to16(byte[] bytes, int offset, int length) -
hashLength17to32
private static long hashLength17to32(byte[] bytes, int offset, int length) -
hashLength33To64
private static long hashLength33To64(byte[] bytes, int offset, int length) -
hashLength65Plus
private static long hashLength65Plus(byte[] bytes, int offset, int length)
-