Package net.jpountz.xxhash
Class XXHashFactory
java.lang.Object
net.jpountz.xxhash.XXHashFactory
Entry point to get
XXHash32 and StreamingXXHash32 instances.
This class has 3 instances
- a
nativeinstance which is a JNI binding to the original LZ4 C implementation. - a
safe Javainstance which is a pure Java port of the original C library, - an
unsafe Javainstance which is a Java port using the unofficialUnsafeAPI.
Only the safe instance is guaranteed to work on your
JVM, as a consequence it is advised to use the fastestInstance() or
fastestJavaInstance() to pull a XXHashFactory instance.
All methods from this class are very costly, so you should get an instance
once, and then reuse it whenever possible. This is typically done by storing
a XXHashFactory instance in a static field.
-
Method Summary
Modifier and TypeMethodDescriptionstatic XXHashFactoryReturns the fastest availableXXHashFactoryinstance.static XXHashFactoryReturns the fastest availableXXHashFactoryinstance which does not rely on JNI bindings.hash32()Returns aXXHash32instance.hash64()Returns aXXHash64instance.static voidPrints the fastest instance.static XXHashFactoryReturns aXXHashFactorythat returnsXXHash32instances that are native bindings to the original C API.newStreamingHash32(int seed) Return a newStreamingXXHash32instance.newStreamingHash64(long seed) Return a newStreamingXXHash64instance.static XXHashFactoryReturns aXXHashFactorythat returnsXXHash32instances that are written with Java's official API.toString()static XXHashFactory
-
Method Details
-
nativeInstance
Returns aXXHashFactorythat returnsXXHash32instances that are native bindings to the original C API.Please note that this instance has some traps you should be aware of:
- Upon loading this instance, files will be written to the temporary directory of the system. Although these files are supposed to be deleted when the JVM exits, they might remain on systems that don't support removal of files being used such as Windows.
- The instance can only be loaded once per JVM. This can be a problem if your application uses multiple class loaders (such as most servlet containers): this instance will only be available to the children of the class loader which has loaded it. As a consequence, it is advised to either not use this instance in webapps or to put this library in the lib directory of your servlet container so that it is loaded by the system class loader.
- Returns:
- a
XXHashFactorythat returnsXXHash32instances that are native bindings to the original C API.
-
safeInstance
Returns aXXHashFactorythat returnsXXHash32instances that are written with Java's official API.- Returns:
- a
XXHashFactorythat returnsXXHash32instances that are written with Java's official API.
-
unsafeInstance
- Returns:
- a
XXHashFactorythat returnsXXHash32instances that may useUnsafeto speed up hashing.
-
fastestJavaInstance
Returns the fastest availableXXHashFactoryinstance which does not rely on JNI bindings. It first tries to load theunsafe instance, and then thesafe Java instanceif the JVM doesn't have a workingUnsafe.- Returns:
- the fastest available
XXHashFactoryinstance which does not rely on JNI bindings.
-
fastestInstance
Returns the fastest availableXXHashFactoryinstance. If the class loader is the system class loader and if thenative instanceloads successfully, then thenative instanceis returned, otherwise thefastest Java instanceis returned.Please read
javadocs of nativeInstance()before using this method.- Returns:
- the fastest available
XXHashFactoryinstance.
-
hash32
Returns aXXHash32instance.- Returns:
- a
XXHash32instance.
-
hash64
Returns aXXHash64instance.- Returns:
- a
XXHash64instance.
-
newStreamingHash32
Return a newStreamingXXHash32instance.- Parameters:
seed- the seed to use- Returns:
- a
StreamingXXHash32instance
-
newStreamingHash64
Return a newStreamingXXHash64instance.- Parameters:
seed- the seed to use- Returns:
- a
StreamingXXHash64instance
-
main
Prints the fastest instance.- Parameters:
args- no argument required
-
toString
-