mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.fuzz] internal/fuzz: add more benchmarks for workers
* Benchmark{Marshal,Unmarshal}CorpusFile - measures time it takes to
serialize and deserialize byte slices of various lengths.
* BenchmarkWorkerPing - spins up a worker and measures time it takes
to ping it N times as a rough measure of RPC latency.
* BenchmarkWorkerFuzz - spins up a worker and measures time it takes
to mutate an input and call a trivial fuzz function N times.
Also a few small fixes to make this easier.
Change-Id: Id7f2dc6c6c05005cf286f30e6cc92a54bf44fbf7
Reviewed-on: https://go-review.googlesource.com/c/go/+/333670
Trust: Jay Conrod <jayconrod@google.com>
Trust: Katie Hockman <katie@golang.org>
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
This commit is contained in:
parent
d14b7011a5
commit
3e06338c5d
4 changed files with 170 additions and 28 deletions
|
|
@ -5,6 +5,7 @@
|
|||
package fuzz
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
|
@ -120,3 +121,44 @@ float32(2.5)`,
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
// BenchmarkMarshalCorpusFile measures the time it takes to serialize byte
|
||||
// slices of various sizes to a corpus file. The slice contains a repeating
|
||||
// sequence of bytes 0-255 to mix escaped and non-escaped characters.
|
||||
func BenchmarkMarshalCorpusFile(b *testing.B) {
|
||||
buf := make([]byte, 1024*1024)
|
||||
for i := 0; i < len(buf); i++ {
|
||||
buf[i] = byte(i)
|
||||
}
|
||||
|
||||
for sz := 1; sz <= len(buf); sz <<= 1 {
|
||||
sz := sz
|
||||
b.Run(strconv.Itoa(sz), func(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
b.SetBytes(int64(sz))
|
||||
marshalCorpusFile(buf[:sz])
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// BenchmarkUnmarshalCorpusfile measures the time it takes to deserialize
|
||||
// files encoding byte slices of various sizes. The slice contains a repeating
|
||||
// sequence of bytes 0-255 to mix escaped and non-escaped characters.
|
||||
func BenchmarkUnmarshalCorpusFile(b *testing.B) {
|
||||
buf := make([]byte, 1024*1024)
|
||||
for i := 0; i < len(buf); i++ {
|
||||
buf[i] = byte(i)
|
||||
}
|
||||
|
||||
for sz := 1; sz <= len(buf); sz <<= 1 {
|
||||
sz := sz
|
||||
data := marshalCorpusFile(buf[:sz])
|
||||
b.Run(strconv.Itoa(sz), func(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
b.SetBytes(int64(sz))
|
||||
unmarshalCorpusFile(data)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue