Parcourir la source

move murmur to internal/murmur

Chris Bannister il y a 10 ans
Parent
commit
e070a8ccce
4 fichiers modifiés avec 20 ajouts et 14 suppressions
  1. 2 2
      internal/murmur/murmur.go
  2. 2 2
      internal/murmur/murmur_appengine.go
  3. 13 9
      internal/murmur/murmur_test.go
  4. 3 1
      token.go

+ 2 - 2
murmur.go → internal/murmur/murmur.go

@@ -1,12 +1,12 @@
 // +build !appengine
 
-package gocql
+package murmur
 
 import (
 	"unsafe"
 )
 
-func murmur3H1(data []byte) uint64 {
+func Murmur3H1(data []byte) uint64 {
 	length := len(data)
 
 	var h1, h2, k1, k2 uint64

+ 2 - 2
murmur_appengine.go → internal/murmur/murmur_appengine.go

@@ -1,10 +1,10 @@
 // +build appengine
 
-package gocql
+package murmur
 
 import "encoding/binary"
 
-func murmur3H1(data []byte) uint64 {
+func Murmur3H1(data []byte) uint64 {
 	length := len(data)
 
 	var h1, h2, k1, k2 uint64

+ 13 - 9
murmur_test.go → internal/murmur/murmur_test.go

@@ -1,4 +1,4 @@
-package gocql
+package murmur
 
 import (
 	"strconv"
@@ -49,7 +49,7 @@ func TestMurmur3H1(t *testing.T) {
 
 // helper function for testing the murmur3 implementation
 func assertMurmur3H1(t *testing.T, data []byte, expected uint64) {
-	actual := murmur3H1(data)
+	actual := Murmur3H1(data)
 	if actual != expected {
 		t.Errorf("Expected h1 = %x for data = %x, but was %x", expected, data, actual)
 	}
@@ -57,14 +57,18 @@ func assertMurmur3H1(t *testing.T, data []byte, expected uint64) {
 
 // Benchmark of the performance of the murmur3 implementation
 func BenchmarkMurmur3H1(b *testing.B) {
-	var h1 uint64
-	var data [1024]byte
+	data := make([]byte, 1024)
 	for i := 0; i < 1024; i++ {
 		data[i] = byte(i)
 	}
-	for i := 0; i < b.N; i++ {
-		b.ResetTimer()
-		h1 = murmur3H1(data[:])
-		_ = murmur3Token(int64(h1))
-	}
+
+	b.ResetTimer()
+	b.RunParallel(func(pb *testing.PB) {
+		for pb.Next() {
+			h1 := Murmur3H1(data)
+			if h1 != 7627370222079200297 {
+				b.Fatalf("expected %d got %d", 7627370222079200297, h1)
+			}
+		}
+	})
 }

+ 3 - 1
token.go

@@ -12,6 +12,8 @@ import (
 	"sort"
 	"strconv"
 	"strings"
+
+	"github.com/gocql/gocql/internal/murmur"
 )
 
 // a token partitioner
@@ -36,7 +38,7 @@ func (p murmur3Partitioner) Name() string {
 }
 
 func (p murmur3Partitioner) Hash(partitionKey []byte) token {
-	h1 := murmur3H1(partitionKey)
+	h1 := murmur.Murmur3H1(partitionKey)
 	return murmur3Token(int64(h1))
 }