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
native
instance which is a JNI binding to the original LZ4 C implementation. - a
safe Java
instance which is a pure Java port of the original C library,
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 XXHashFactory
Returns the fastest availableXXHashFactory
instance.static XXHashFactory
Returns the fastest availableXXHashFactory
instance which does not rely on JNI bindings.hash32()
Returns aXXHash32
instance.hash64()
Returns aXXHash64
instance.static void
Prints the fastest instance.static XXHashFactory
Returns aXXHashFactory
that returnsXXHash32
instances that are native bindings to the original C API.newStreamingHash32
(int seed) Return a newStreamingXXHash32
instance.newStreamingHash64
(long seed) Return a newStreamingXXHash64
instance.static XXHashFactory
Returns aXXHashFactory
that returnsXXHash32
instances that are written with Java's official API.toString()
-
Method Details
-
nativeInstance
Returns aXXHashFactory
that returnsXXHash32
instances 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
XXHashFactory
that returnsXXHash32
instances that are native bindings to the original C API.
-
safeInstance
Returns aXXHashFactory
that returnsXXHash32
instances that are written with Java's official API.- Returns:
- a
XXHashFactory
that returnsXXHash32
instances that are written with Java's official API.
-
fastestJavaInstance
Returns the fastest availableXXHashFactory
instance which does not rely on JNI bindings. It loadssafe instance
- Returns:
- the fastest available
XXHashFactory
instance which does not rely on JNI bindings.
-
fastestInstance
Returns the fastest availableXXHashFactory
instance. If the class loader is the system class loader and if thenative instance
loads successfully, then thenative instance
is returned, otherwise thefastest Java instance
is returned.Please read
javadocs of nativeInstance()
before using this method.- Returns:
- the fastest available
XXHashFactory
instance.
-
hash32
Returns aXXHash32
instance.- Returns:
- a
XXHash32
instance.
-
hash64
Returns aXXHash64
instance.- Returns:
- a
XXHash64
instance.
-
newStreamingHash32
Return a newStreamingXXHash32
instance.- Parameters:
seed
- the seed to use- Returns:
- a
StreamingXXHash32
instance
-
newStreamingHash64
Return a newStreamingXXHash64
instance.- Parameters:
seed
- the seed to use- Returns:
- a
StreamingXXHash64
instance
-
main
Prints the fastest instance.- Parameters:
args
- no argument required
-
toString
-