Skip to content

Commit

Permalink
tests/runtime: add benchmarks for runtime memhash
Browse files Browse the repository at this point in the history
  • Loading branch information
dgryski authored and deadprogram committed Jul 5, 2022
1 parent 27162eb commit 24b1bfc
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions tests/runtime/memhash_test.go
Original file line number Diff line number Diff line change
@@ -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])
}
}

0 comments on commit 24b1bfc

Please sign in to comment.