Commit 11384eec authored by Russ Cox's avatar Russ Cox

testing: compute MB/s in benchmarks

R=r
https://golang.org/cl/166060
parent 4ed57173
......@@ -26,6 +26,7 @@ type B struct {
N int;
benchmark Benchmark;
ns int64;
bytes int64;
start int64;
}
......@@ -50,6 +51,10 @@ func (b *B) ResetTimer() {
b.ns = 0;
}
// SetBytes records the number of bytes processed in a single operation.
// If this is called, the benchmark will report ns/op and MB/s.
func (b *B) SetBytes(n int64) { b.bytes = n }
func (b *B) nsPerOp() int64 {
if b.N <= 0 {
return 0
......@@ -125,7 +130,12 @@ func (b *B) run() {
n = roundUp(n);
b.runN(n);
}
fmt.Printf("%s\t%d\t%10d ns/op\n", b.benchmark.Name, b.N, b.nsPerOp());
ns := b.nsPerOp();
mb := "";
if ns > 0 && b.bytes > 0 {
mb = fmt.Sprintf("\t%7.2f MB/s", (float64(b.bytes)/1e6)/(float64(ns)/1e9))
}
fmt.Printf("%s\t%8d\t%10d ns/op%s\n", b.benchmark.Name, b.N, b.nsPerOp(), mb);
}
// 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