mirror of
https://github.com/charlienet/go-mixed.git
synced 2025-07-18 00:22:41 +08:00
优化哈希函数
This commit is contained in:
@ -1,8 +1,8 @@
|
||||
package hash_test
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
@ -10,10 +10,8 @@ import (
|
||||
)
|
||||
|
||||
func TestEncode(t *testing.T) {
|
||||
|
||||
t.Log(base64.StdEncoding.EncodeToString(hash.Sha1([]byte{0x31})))
|
||||
t.Log(hex.EncodeToString(hash.Sha1([]byte{0x31})))
|
||||
|
||||
t.Log(hash.Sha1([]byte{0x31}).Base64())
|
||||
t.Log(hash.Sha1([]byte{0x31}).Hex())
|
||||
}
|
||||
|
||||
func TestXXHash(t *testing.T) {
|
||||
@ -26,3 +24,56 @@ func TestMurmur3(t *testing.T) {
|
||||
t.Log(hash.Murmur3([]byte("123")))
|
||||
t.Log(hash.XXHashUint64([]byte("123")))
|
||||
}
|
||||
|
||||
func TestFnv(t *testing.T) {
|
||||
for i := 0; i < 100; i++ {
|
||||
bytes := []byte(fmt.Sprintf("%d", i))
|
||||
t.Log(hash.Funv32(bytes))
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkHash(b *testing.B) {
|
||||
bytes := []byte("abcdefdg")
|
||||
b.Run("xxhash", func(b *testing.B) {
|
||||
doBenchmark(func() {
|
||||
hash.XXHashUint64(bytes)
|
||||
}, b)
|
||||
})
|
||||
|
||||
b.Run("murmur3", func(b *testing.B) {
|
||||
doBenchmark(func() {
|
||||
hash.Murmur3(bytes)
|
||||
}, b)
|
||||
})
|
||||
|
||||
b.Run("fnv", func(b *testing.B) {
|
||||
doBenchmark(func() {
|
||||
hash.Funv64(bytes)
|
||||
}, b)
|
||||
})
|
||||
|
||||
b.Run("sm3", func(b *testing.B) {
|
||||
doBenchmark(func() {
|
||||
hash.Sm3(bytes)
|
||||
}, b)
|
||||
})
|
||||
|
||||
b.Run("md5", func(b *testing.B) {
|
||||
doBenchmark(func() {
|
||||
hash.Md5(bytes)
|
||||
}, b)
|
||||
})
|
||||
|
||||
b.Run("sha256", func(b *testing.B) {
|
||||
doBenchmark(func() {
|
||||
hash.Sha256(bytes)
|
||||
}, b)
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func doBenchmark(f func(), b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
f()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user