diff options
| author | Heschi Kreinick <heschi@google.com> | 2017-02-27 18:26:33 -0500 |
|---|---|---|
| committer | Marcel van Lohuizen <mpvl@golang.org> | 2017-03-01 11:06:34 +0000 |
| commit | 5e90bbcc6de54ecbad1d72bc8e71e167829069b5 (patch) | |
| tree | 0cc6845db91706caba386bac832c7669fd1e72c2 /src/testing | |
| parent | 29f061960d5008170541a886feab721bf754f0fd (diff) | |
| download | go-5e90bbcc6de54ecbad1d72bc8e71e167829069b5.tar.xz | |
testing: fix Benchmark() to start at 1 iteration, not 100
The run1 call removed in golang.org/cl/36990 was necessary to
initialize the duration of the benchmark. With it gone, the math in
launch() starts from 100. This doesn't work out well for second-long
benchmark methods. Put it back.
Updates #18815
Change-Id: I461f3466c805d0c61124a2974662f7ad45335794
Reviewed-on: https://go-review.googlesource.com/37530
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
Diffstat (limited to 'src/testing')
| -rw-r--r-- | src/testing/benchmark.go | 5 | ||||
| -rw-r--r-- | src/testing/sub_test.go | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/testing/benchmark.go b/src/testing/benchmark.go index 86c0f10ecd..18a46d93bf 100644 --- a/src/testing/benchmark.go +++ b/src/testing/benchmark.go @@ -657,7 +657,10 @@ func Benchmark(f func(b *B)) BenchmarkResult { benchFunc: f, benchTime: *benchTime, } - return b.run() + if b.run1() { + b.run() + } + return b.result } type discard struct{} diff --git a/src/testing/sub_test.go b/src/testing/sub_test.go index fe3e8ff858..ab145b5bf4 100644 --- a/src/testing/sub_test.go +++ b/src/testing/sub_test.go @@ -7,6 +7,7 @@ package testing import ( "bytes" "fmt" + "os" "regexp" "runtime" "strings" @@ -530,6 +531,16 @@ func TestBenchmarkOutput(t *T) { Benchmark(func(b *B) {}) } +func TestBenchmarkStartsFrom1(t *T) { + var first = true + Benchmark(func(b *B) { + if first && b.N != 1 { + panic(fmt.Sprintf("Benchmark() first N=%v; want 1", b.N)) + } + first = false + }) +} + func TestParallelSub(t *T) { c := make(chan int) block := make(chan int) @@ -591,6 +602,7 @@ func TestBenchmark(t *T) { res := Benchmark(func(b *B) { for i := 0; i < 5; i++ { b.Run("", func(b *B) { + fmt.Fprintf(os.Stderr, "b.N: %v\n", b.N) for i := 0; i < b.N; i++ { time.Sleep(time.Millisecond) } |
