Commit 5e90bbcc authored by Heschi Kreinick's avatar Heschi Kreinick Committed by Marcel van Lohuizen

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: default avatarMarcel van Lohuizen <mpvl@golang.org>
parent 29f06196
...@@ -657,7 +657,10 @@ func Benchmark(f func(b *B)) BenchmarkResult { ...@@ -657,7 +657,10 @@ func Benchmark(f func(b *B)) BenchmarkResult {
benchFunc: f, benchFunc: f,
benchTime: *benchTime, benchTime: *benchTime,
} }
return b.run() if b.run1() {
b.run()
}
return b.result
} }
type discard struct{} type discard struct{}
......
...@@ -7,6 +7,7 @@ package testing ...@@ -7,6 +7,7 @@ package testing
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"os"
"regexp" "regexp"
"runtime" "runtime"
"strings" "strings"
...@@ -530,6 +531,16 @@ func TestBenchmarkOutput(t *T) { ...@@ -530,6 +531,16 @@ func TestBenchmarkOutput(t *T) {
Benchmark(func(b *B) {}) 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) { func TestParallelSub(t *T) {
c := make(chan int) c := make(chan int)
block := make(chan int) block := make(chan int)
...@@ -591,6 +602,7 @@ func TestBenchmark(t *T) { ...@@ -591,6 +602,7 @@ func TestBenchmark(t *T) {
res := Benchmark(func(b *B) { res := Benchmark(func(b *B) {
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
b.Run("", func(b *B) { b.Run("", func(b *B) {
fmt.Fprintf(os.Stderr, "b.N: %v\n", b.N)
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
time.Sleep(time.Millisecond) time.Sleep(time.Millisecond)
} }
......
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