]> source.dussan.org Git - sonarqube.git/commitdiff
Complete micro-benchmark on hashes
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 10 Feb 2015 22:03:46 +0000 (23:03 +0100)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 10 Feb 2015 22:03:46 +0000 (23:03 +0100)
microbenchmark-template/src/main/java/org/sonar/microbenchmark/HashBenchmark.java

index a02f30fdd38c5bcaf8e74762968b014f215f7abb..11bc14293b905556c4e702b2454e71501f6971f5 100644 (file)
@@ -58,8 +58,12 @@ public class HashBenchmark {
   @Param({"1", "100", "1000", "10000", "100000", "1000000"})
   public int size;
 
-  XXHash32 xxHash32 = XXHashFactory.fastestInstance().hash32();
-  XXHash64 xxHash64 = XXHashFactory.fastestInstance().hash64();
+  XXHash32 xxHash32Jni = XXHashFactory.fastestInstance().hash32();
+  XXHash64 xxHash64Jni = XXHashFactory.fastestInstance().hash64();
+  XXHash32 xxHash32Unsafe = XXHashFactory.fastestJavaInstance().hash32();
+  XXHash64 xxHash64Unsafe = XXHashFactory.fastestJavaInstance().hash64();
+  XXHash32 xxHash32 = XXHashFactory.safeInstance().hash32();
+  XXHash64 xxHash64 = XXHashFactory.safeInstance().hash64();
 
   byte[] bytes;
 
@@ -85,6 +89,20 @@ public class HashBenchmark {
     return xxHash32.hash(bytes, 0, bytes.length, seed);
   }
 
+  @Benchmark
+  public int xxhash32Jni() throws Exception {
+    int seed = 0x9747b28c; // used to initialize the hash value, use whatever
+    // value you want, but always the same
+    return xxHash32Jni.hash(bytes, 0, bytes.length, seed);
+  }
+
+  @Benchmark
+  public int xxhash32Unsafe() throws Exception {
+    int seed = 0x9747b28c; // used to initialize the hash value, use whatever
+    // value you want, but always the same
+    return xxHash32Unsafe.hash(bytes, 0, bytes.length, seed);
+  }
+
   @Benchmark
   public long xxhash64() throws Exception {
     int seed = 0x9747b28c; // used to initialize the hash value, use whatever
@@ -92,6 +110,20 @@ public class HashBenchmark {
     return xxHash64.hash(bytes, 0, bytes.length, seed);
   }
 
+  @Benchmark
+  public long xxhash64Jni() throws Exception {
+    int seed = 0x9747b28c; // used to initialize the hash value, use whatever
+    // value you want, but always the same
+    return xxHash64Jni.hash(bytes, 0, bytes.length, seed);
+  }
+
+  @Benchmark
+  public long xxhash64Unsafe() throws Exception {
+    int seed = 0x9747b28c; // used to initialize the hash value, use whatever
+    // value you want, but always the same
+    return xxHash64Unsafe.hash(bytes, 0, bytes.length, seed);
+  }
+
   /**
    * You can this benchmark with maven command-line (see run.sh) or by executing this method
    * in IDE