Commit 2653b4fb authored by Dmitriy Vyukov's avatar Dmitriy Vyukov Committed by Russ Cox

testing: fix MB/s computation, documentation

R=rsc
CC=golang-dev
https://golang.org/cl/4529100
parent d1bdff54
...@@ -150,7 +150,7 @@ func (b *B) run() BenchmarkResult { ...@@ -150,7 +150,7 @@ func (b *B) run() BenchmarkResult {
type BenchmarkResult struct { type BenchmarkResult struct {
N int // The number of iterations. N int // The number of iterations.
Ns int64 // The total time taken. Ns int64 // The total time taken.
Bytes int64 // The total number of bytes processed. Bytes int64 // Bytes processed in one iteration.
} }
func (r BenchmarkResult) NsPerOp() int64 { func (r BenchmarkResult) NsPerOp() int64 {
...@@ -160,13 +160,20 @@ func (r BenchmarkResult) NsPerOp() int64 { ...@@ -160,13 +160,20 @@ func (r BenchmarkResult) NsPerOp() int64 {
return r.Ns / int64(r.N) return r.Ns / int64(r.N)
} }
func (r BenchmarkResult) mbPerSec() float64 {
if r.Bytes <= 0 || r.Ns <= 0 || r.N <= 0 {
return 0
}
return float64(r.Bytes) * float64(r.N) / float64(r.Ns) * 1e3
}
func (r BenchmarkResult) String() string { func (r BenchmarkResult) String() string {
ns := r.NsPerOp() mbs := r.mbPerSec()
mb := "" mb := ""
if ns > 0 && r.Bytes > 0 { if mbs != 0 {
mb = fmt.Sprintf("\t%7.2f MB/s", (float64(r.Bytes)/1e6)/(float64(ns)/1e9)) mb = fmt.Sprintf("\t%7.2f MB/s", mbs)
} }
return fmt.Sprintf("%8d\t%10d ns/op%s", r.N, ns, mb) return fmt.Sprintf("%8d\t%10d ns/op%s", r.N, r.NsPerOp(), mb)
} }
// An internal function but exported because it is cross-package; part of the implementation // An internal function but exported because it is cross-package; part of the implementation
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment