]> Cypherpunks repositories - gostls13.git/commitdiff
testing: make benchmarking faster
authorJosh Bleecher Snyder <josharian@gmail.com>
Thu, 12 Jun 2014 14:51:32 +0000 (07:51 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Thu, 12 Jun 2014 14:51:32 +0000 (07:51 -0700)
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

src/pkg/testing/benchmark.go

index 1fbf5c8615f8c73a91a5d911da78877b3c8e985d..43bbecbdc6278905f2e007856e36c863d82ddbed 100644 (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)