mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-07-26 06:38:42 +00:00
tests/runtime: add benchmarks for runtime memhash
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"hash/maphash"
|
||||
"strconv"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var buf [8192]byte
|
||||
|
||||
func BenchmarkMaphash(b *testing.B) {
|
||||
var h maphash.Hash
|
||||
benchmarkHash(b, "maphash", h)
|
||||
}
|
||||
|
||||
func benchmarkHash(b *testing.B, str string, h maphash.Hash) {
|
||||
var sizes = []int{1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 1024, 8192}
|
||||
for _, n := range sizes {
|
||||
b.Run(strconv.Itoa(n), func(b *testing.B) { benchmarkHashn(b, int64(n), h) })
|
||||
}
|
||||
}
|
||||
|
||||
var total uint64
|
||||
|
||||
func benchmarkHashn(b *testing.B, size int64, h maphash.Hash) {
|
||||
b.SetBytes(size)
|
||||
|
||||
sum := make([]byte, 4)
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
h.Reset()
|
||||
h.Write(buf[:size])
|
||||
sum = h.Sum(sum[:0])
|
||||
total += uint64(sum[0])
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user