]> Cypherpunks repositories - gostls13.git/commitdiff
testing: fix MB/s computation, documentation
authorDmitriy Vyukov <dvyukov@google.com>
Thu, 2 Jun 2011 14:52:46 +0000 (10:52 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 2 Jun 2011 14:52:46 +0000 (10:52 -0400)
R=rsc
CC=golang-dev
https://golang.org/cl/4529100

src/pkg/testing/benchmark.go

index cf73e2b48f8ece11cb114807436869f6a8c1070e..db4c65941c08ef5491a4e52bd692e6de71d3429b 100644 (file)
@@ -150,7 +150,7 @@ func (b *B) run() BenchmarkResult {
 type BenchmarkResult struct {
        N     int   // The number of iterations.
        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 {
@@ -160,13 +160,20 @@ func (r BenchmarkResult) NsPerOp() int64 {
        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 {
-       ns := r.NsPerOp()
+       mbs := r.mbPerSec()
        mb := ""
-       if ns > 0 && r.Bytes > 0 {
-               mb = fmt.Sprintf("\t%7.2f MB/s", (float64(r.Bytes)/1e6)/(float64(ns)/1e9))
+       if mbs != 0 {
+               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