testing: make benchmarking faster

Allow the number of benchmark iterations to grow faster for fast benchmarks, and don't round up twice.

Using the default benchtime, this CL reduces wall clock time to run benchmarks:

net/http        49s   -> 37s   (-24%)
runtime         8m31s -> 5m55s (-30%)
bytes           2m37s -> 1m29s (-43%)
encoding/json   29s   -> 21s   (-27%)
strings         1m16s -> 53s   (-30%)

LGTM=crawshaw
R=golang-codereviews, crawshaw
CC=golang-codereviews
https://golang.org/cl/101970047
This commit is contained in:
Josh Bleecher Snyder 2014-06-12 07:51:32 -07:00
parent 0476693eaf
commit a5bb1af432
1 changed files with 5 additions and 3 deletions

View File

@ -205,10 +205,12 @@ func (b *B) launch() {
} else {
n = int(d.Nanoseconds() / b.nsPerOp())
}
// Run more iterations than we think we'll need for a second (1.5x).
// Don't grow too fast in case we had timing errors previously.
// If the last run was small, don't grow too fast.
if last < 1000 {
n = min(n, 100*last)
}
// Be sure to run at least one more than last time.
n = max(min(n+n/2, 100*last), last+1)
n = max(n, last+1)
// Round up to something easy to read.
n = roundUp(n)
b.runN(n)