Class XXHashFactory

java.lang.Object
net.jpountz.xxhash.XXHashFactory

public final class XXHashFactory extends Object
Entry point to get XXHash32 and StreamingXXHash32 instances.

This class has 3 instances

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 Details

    • nativeInstance

      public static XXHashFactory nativeInstance()
      Returns a XXHashFactory that returns XXHash32 instances that are native bindings to the original C API.

      Please note that this instance has some traps you should be aware of:

      1. 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.
      2. 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 returns XXHash32 instances that are native bindings to the original C API.
    • safeInstance

      public static XXHashFactory safeInstance()
      Returns a XXHashFactory that returns XXHash32 instances that are written with Java's official API.
      Returns:
      a XXHashFactory that returns XXHash32 instances that are written with Java's official API.
    • fastestJavaInstance

      public static XXHashFactory fastestJavaInstance()
      Returns the fastest available XXHashFactory instance which does not rely on JNI bindings. It loads safe instance
      Returns:
      the fastest available XXHashFactory instance which does not rely on JNI bindings.
    • fastestInstance

      public static XXHashFactory fastestInstance()
      Returns the fastest available XXHashFactory instance. If the class loader is the system class loader and if the native instance loads successfully, then the native instance is returned, otherwise the fastest Java instance is returned.

      Please read javadocs of nativeInstance() before using this method.

      Returns:
      the fastest available XXHashFactory instance.
    • hash32

      public XXHash32 hash32()
      Returns a XXHash32 instance.
      Returns:
      a XXHash32 instance.
    • hash64

      public XXHash64 hash64()
      Returns a XXHash64 instance.
      Returns:
      a XXHash64 instance.
    • newStreamingHash32

      public StreamingXXHash32 newStreamingHash32(int seed)
      Return a new StreamingXXHash32 instance.
      Parameters:
      seed - the seed to use
      Returns:
      a StreamingXXHash32 instance
    • newStreamingHash64

      public StreamingXXHash64 newStreamingHash64(long seed)
      Return a new StreamingXXHash64 instance.
      Parameters:
      seed - the seed to use
      Returns:
      a StreamingXXHash64 instance
    • main

      public static void main(String[] args)
      Prints the fastest instance.
      Parameters:
      args - no argument required
    • toString

      public String toString()
      Overrides:
      toString in class Object