func (d *digest) Sum(in []byte) []byte {
s := d.Sum32()
- in = append(in, byte(s>>24))
- in = append(in, byte(s>>16))
- in = append(in, byte(s>>8))
- in = append(in, byte(s))
- return in
+ return append(in, byte(s>>24), byte(s>>16), byte(s>>8), byte(s))
}
// Checksum returns the Adler-32 checksum of data.
package adler32
import (
- "bytes"
"io"
"testing"
)
}
}
-func BenchmarkGolden(b *testing.B) {
- b.StopTimer()
- c := New()
- var buf bytes.Buffer
- for _, g := range golden {
- buf.Write([]byte(g.in))
+func BenchmarkAdler32KB(b *testing.B) {
+ b.SetBytes(1024)
+ data := make([]byte, 1024)
+ for i := range data {
+ data[i] = byte(i)
}
- b.StartTimer()
+ h := New()
+ in := make([]byte, 0, h.Size())
+
+ b.ResetTimer()
for i := 0; i < b.N; i++ {
- c.Write(buf.Bytes())
+ h.Reset()
+ h.Write(data)
+ h.Sum(in)
}
}
func (d *digest) Sum(in []byte) []byte {
s := d.Sum32()
- in = append(in, byte(s>>24))
- in = append(in, byte(s>>16))
- in = append(in, byte(s>>8))
- in = append(in, byte(s))
- return in
+ return append(in, byte(s>>24), byte(s>>16), byte(s>>8), byte(s))
}
// Checksum returns the CRC-32 checksum of data
}
func BenchmarkCrc32KB(b *testing.B) {
- b.StopTimer()
- data := make([]uint8, 1024)
- for i := 0; i < 1024; i++ {
- data[i] = uint8(i)
+ b.SetBytes(1024)
+ data := make([]byte, 1024)
+ for i := range data {
+ data[i] = byte(i)
}
- c := NewIEEE()
- b.StartTimer()
- b.SetBytes(int64(len(data)))
+ h := NewIEEE()
+ in := make([]byte, 0, h.Size())
+ b.ResetTimer()
for i := 0; i < b.N; i++ {
- c.Write(data)
+ h.Reset()
+ h.Write(data)
+ h.Sum(in)
}
}
func (d *digest) Sum(in []byte) []byte {
s := d.Sum64()
- in = append(in, byte(s>>56))
- in = append(in, byte(s>>48))
- in = append(in, byte(s>>40))
- in = append(in, byte(s>>32))
- in = append(in, byte(s>>24))
- in = append(in, byte(s>>16))
- in = append(in, byte(s>>8))
- in = append(in, byte(s))
- return in
+ return append(in, byte(s>>56), byte(s>>48), byte(s>>40), byte(s>>32), byte(s>>24), byte(s>>16), byte(s>>8), byte(s))
}
// Checksum returns the CRC-64 checksum of data
}
func BenchmarkCrc64KB(b *testing.B) {
- b.StopTimer()
- data := make([]uint8, 1024)
- for i := 0; i < 1024; i++ {
- data[i] = uint8(i)
+ b.SetBytes(1024)
+ data := make([]byte, 1024)
+ for i := range data {
+ data[i] = byte(i)
}
- c := New(tab)
- b.StartTimer()
+ h := New(tab)
+ in := make([]byte, 0, h.Size())
+ b.ResetTimer()
for i := 0; i < b.N; i++ {
- c.Write(data)
+ h.Reset()
+ h.Write(data)
+ h.Sum(in)
}
}
func (s *sum32) Sum(in []byte) []byte {
v := uint32(*s)
- in = append(in, byte(v>>24))
- in = append(in, byte(v>>16))
- in = append(in, byte(v>>8))
- in = append(in, byte(v))
- return in
+ return append(in, byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
}
func (s *sum32a) Sum(in []byte) []byte {
v := uint32(*s)
- in = append(in, byte(v>>24))
- in = append(in, byte(v>>16))
- in = append(in, byte(v>>8))
- in = append(in, byte(v))
- return in
+ return append(in, byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
}
func (s *sum64) Sum(in []byte) []byte {
v := uint64(*s)
- in = append(in, byte(v>>56))
- in = append(in, byte(v>>48))
- in = append(in, byte(v>>40))
- in = append(in, byte(v>>32))
- in = append(in, byte(v>>24))
- in = append(in, byte(v>>16))
- in = append(in, byte(v>>8))
- in = append(in, byte(v))
- return in
+ return append(in, byte(v>>56), byte(v>>48), byte(v>>40), byte(v>>32), byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
}
func (s *sum64a) Sum(in []byte) []byte {
v := uint64(*s)
- in = append(in, byte(v>>56))
- in = append(in, byte(v>>48))
- in = append(in, byte(v>>40))
- in = append(in, byte(v>>32))
- in = append(in, byte(v>>24))
- in = append(in, byte(v>>16))
- in = append(in, byte(v>>8))
- in = append(in, byte(v))
- return in
+ return append(in, byte(v>>56), byte(v>>48), byte(v>>40), byte(v>>32), byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
}
"testing"
)
-const testDataSize = 40
-
type golden struct {
sum []byte
text string
}
}
-func Benchmark32(b *testing.B) {
- benchmark(b, New32())
+func BenchmarkFnv32KB(b *testing.B) {
+ benchmarkKB(b, New32())
}
-func Benchmark32a(b *testing.B) {
- benchmark(b, New32a())
+func BenchmarkFnv32aKB(b *testing.B) {
+ benchmarkKB(b, New32a())
}
-func Benchmark64(b *testing.B) {
- benchmark(b, New64())
+func BenchmarkFnv64KB(b *testing.B) {
+ benchmarkKB(b, New64())
}
-func Benchmark64a(b *testing.B) {
- benchmark(b, New64a())
+func BenchmarkFnv64aKB(b *testing.B) {
+ benchmarkKB(b, New64a())
}
-func benchmark(b *testing.B, h hash.Hash) {
- b.ResetTimer()
- b.SetBytes(testDataSize)
- data := make([]byte, testDataSize)
+func benchmarkKB(b *testing.B, h hash.Hash) {
+ b.SetBytes(1024)
+ data := make([]byte, 1024)
for i := range data {
- data[i] = byte(i + 'a')
+ data[i] = byte(i)
}
+ in := make([]byte, 0, h.Size())
- b.StartTimer()
- for todo := b.N; todo != 0; todo-- {
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
h.Reset()
h.Write(data)
- h.Sum(nil)
+ h.Sum(in)
}
}