55d18b7db9
After my last change, I noticed that the hash is used as a []byte in most cases (other than tests). This patch updates the type to use a []byte, which (although unlikely very important) also improves performance: Compared to the previous version: benchstat new.txt new2.txt name old time/op new time/op delta HashData-10 128ns ± 1% 116ns ± 1% -9.77% (p=0.000 n=20+20) name old alloc/op new alloc/op delta HashData-10 208B ± 0% 88B ± 0% -57.69% (p=0.000 n=20+20) name old allocs/op new allocs/op delta HashData-10 3.00 ± 0% 2.00 ± 0% -33.33% (p=0.000 n=20+20) And compared to the original version: benchstat old.txt new2.txt name old time/op new time/op delta HashData-10 201ns ± 1% 116ns ± 1% -42.39% (p=0.000 n=18+20) name old alloc/op new alloc/op delta HashData-10 416B ± 0% 88B ± 0% -78.85% (p=0.000 n=20+20) name old allocs/op new allocs/op delta HashData-10 6.00 ± 0% 2.00 ± 0% -66.67% (p=0.000 n=20+20) Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
21 lines
467 B
Go
21 lines
467 B
Go
package resolvconf
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
func TestHashData(t *testing.T) {
|
|
const expected = "sha256:4d11186aed035cc624d553e10db358492c84a7cd6b9670d92123c144930450aa"
|
|
if actual := hashData([]byte("hash-me")); !bytes.Equal(actual, []byte(expected)) {
|
|
t.Fatalf("Expecting %s, got %s", expected, string(actual))
|
|
}
|
|
}
|
|
|
|
func BenchmarkHashData(b *testing.B) {
|
|
b.ReportAllocs()
|
|
data := []byte("hash-me")
|
|
for i := 0; i < b.N; i++ {
|
|
_ = hashData(data)
|
|
}
|
|
}
|