package hashing

import bloomfilter.hash.MurmurHash3.LongPair
import bloomfilter.hash.{MurmurHash3 => jMurmurHash3}
import com.google.common.hash.Hashing
import org.openjdk.jmh.annotations.{Benchmark, Scope, State}

@State(Scope.Benchmark)
class MurmurHash3Benchmark {

  val key = Range(0, 64).map(_.toByte).toArray

  @Benchmark
  def javaVersion() = {
    jMurmurHash3.murmurhash3_x64_128(key, 0, key.length, 0, new LongPair)
  }

  @Benchmark
  def scalaVersion() = {
    MurmurHash3.murmurhash3_x64_128(key, 0, key.length, 0)
  }

  val guavaMurmur = Hashing.murmur3_128()

  @Benchmark
  def guavaVersion() = {
    guavaMurmur.hashBytes(key, 0, key.length)
  }
}

package hashing

import bloomfilter.hash.MurmurHash3.LongPair
import bloomfilter.hash.{MurmurHash3 => jMurmurHash3}
import org.openjdk.jmh.annotations.{Benchmark, Scope, State}


@State(Scope.Benchmark)
class MurmurHash3Benchmark {

  val key = Range(0, 64).map(_.toByte).toArray

  @Benchmark
  def javaVersion() = {
    jMurmurHash3.murmurhash3_x64_128(key, 0, key.length, 0, new LongPair)
  }

  @Benchmark
  def scalaVersion() = {
    MurmurHash3.murmurhash3_x64_128(key, 0, key.length, 0)
  }
}

--- 
+++ 
@@ -2,8 +2,8 @@
 
 import bloomfilter.hash.MurmurHash3.LongPair
 import bloomfilter.hash.{MurmurHash3 => jMurmurHash3}
+import com.google.common.hash.Hashing
 import org.openjdk.jmh.annotations.{Benchmark, Scope, State}
-
 
 @State(Scope.Benchmark)
 class MurmurHash3Benchmark {
@@ -19,4 +19,11 @@
   def scalaVersion() = {
     MurmurHash3.murmurhash3_x64_128(key, 0, key.length, 0)
   }
+
+  val guavaMurmur = Hashing.murmur3_128()
+
+  @Benchmark
+  def guavaVersion() = {
+    guavaMurmur.hashBytes(key, 0, key.length)
+  }
 }
Add guava Murmur benchmark and it sucks :open_mouth:

