1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-18 00:22:41 +08:00

优化哈希函数

This commit is contained in:
2022-03-29 10:02:34 +08:00
parent 421e8e191b
commit 42f85a2518
3 changed files with 111 additions and 65 deletions

View File

@ -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()
}
}