aboutsummaryrefslogtreecommitdiff
path: root/src/testing
diff options
context:
space:
mode:
authorHeschi Kreinick <heschi@google.com>2017-02-27 18:26:33 -0500
committerMarcel van Lohuizen <mpvl@golang.org>2017-03-01 11:06:34 +0000
commit5e90bbcc6de54ecbad1d72bc8e71e167829069b5 (patch)
tree0cc6845db91706caba386bac832c7669fd1e72c2 /src/testing
parent29f061960d5008170541a886feab721bf754f0fd (diff)
downloadgo-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.go5
-rw-r--r--src/testing/sub_test.go12
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)
}