mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
testing: harmonize handling of prefix-matched benchmarks
If you have BenchmarkX1 with sub-benchmark Y and you have BenchmarkX2 with no sub-benchmarks, then go test -bench=X/Y runs BenchmarkX1 once with b.N=1 (to find out about Y) and then not again, because it has sub-benchmarks, but arguably also because we're interested in Y. In contrast, it runs BenchmarkX2 in full, even though clearly that is not relevant to the match X/Y. We do have to run X2 once with b.N=1 to probe for having X2/Y, but we should not run it with larger b.N. Fixes #20589. Change-Id: Ib86907e844f34dcaac6cd05757f57db1019201d0 Reviewed-on: https://go-review.googlesource.com/46031 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
This commit is contained in:
parent
be855e3f28
commit
a2a3ace51a
8 changed files with 142 additions and 43 deletions
|
|
@ -7,7 +7,6 @@ package testing
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
|
@ -602,7 +601,6 @@ 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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue