1
This commit is contained in:
60
pkg/utility/cmap/concurrentmap_test.go
Normal file
60
pkg/utility/cmap/concurrentmap_test.go
Normal file
@ -0,0 +1,60 @@
|
||||
package cmap
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go-admin/pkg/utility"
|
||||
"hash/crc32"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// 离散性测试
|
||||
func Test_fnv32(t *testing.T) {
|
||||
st := make(map[uint32]int)
|
||||
for i := 0; i < 1000000; i++ {
|
||||
fnv := crc32.ChecksumIEEE([]byte(utility.GenerateRandString(8)))
|
||||
k := fnv & 15
|
||||
count, ok := st[k]
|
||||
if !ok {
|
||||
st[k] = 1
|
||||
}
|
||||
st[k] = count + 1
|
||||
}
|
||||
for k, v := range st {
|
||||
fmt.Println(k, "\t", float64(v)/1000000)
|
||||
}
|
||||
}
|
||||
|
||||
// go test -bench=_QE_ -benchmem -run=^$
|
||||
// -benchtime 默认为1秒 -benchmem 获得内存分配的统计数据
|
||||
// Benchmark_QE_1-6 146641 8192 ns/op 32 B/op 3 allocs/op
|
||||
// Benchmark_QE_2-6 143118 8246 ns/op 40 B/op 4 allocs/op
|
||||
//
|
||||
// Benchmark_QE_1-6 146289 8212 ns/op 32 B/op 3 allocs/op
|
||||
// Benchmark_QE_2-6 144918 8239 ns/op 40 B/op 4 allocs/op
|
||||
func Benchmark_QE_1(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
fnv32(utility.GenerateRandString(8))
|
||||
}
|
||||
}
|
||||
|
||||
func Benchmark_QE_2(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
crc32.ChecksumIEEE([]byte(utility.GenerateRandString(8)))
|
||||
}
|
||||
}
|
||||
|
||||
// go test -bench=_QE2_ -benchmem -benchtime=5s -run=^$
|
||||
// -benchtime 默认为1秒 -benchmem 获得内存分配的统计数据
|
||||
// Benchmark_QE2_1-6 1000000000 0.2623 ns/op 0 B/op 0 allocs/op
|
||||
// Benchmark_QE2_2-6 1000000000 0.2631 ns/op 0 B/op 0 allocs/op
|
||||
func Benchmark_QE2_1(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
_ = i & 31
|
||||
}
|
||||
}
|
||||
|
||||
func Benchmark_QE2_2(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
_ = i % 31
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user