1
0
mirror of https://github.com/golang/go synced 2024-09-24 05:10:13 -06:00

go/scanner: improve variety in benchmarks for file scanning

BenchmarkScanFile was scanning scanner.go, which makes comparison
difficult for a CL modifying that file. That file is also is not
necessarily representative syntax.

Add a few additional files as subtests to provide a larger variety of
metrics.

Change-Id: Ib78303c2546debd84a0b5478ae438ba891d9e6e9
Reviewed-on: https://go-review.googlesource.com/c/go/+/308610
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
Rob Findley 2021-04-07 17:43:09 -04:00 committed by Robert Findley
parent 6fa12172d9
commit bc6288794d

View File

@ -889,26 +889,37 @@ func BenchmarkScan(b *testing.B) {
} }
} }
func BenchmarkScanFile(b *testing.B) { func BenchmarkScanFiles(b *testing.B) {
b.StopTimer() // Scan a few arbitrary large files, and one small one, to provide some
const filename = "scanner.go" // variety in benchmarks.
src, err := os.ReadFile(filename) for _, p := range []string{
if err != nil { "go/types/expr.go",
panic(err) "go/parser/parser.go",
} "net/http/server.go",
fset := token.NewFileSet() "go/scanner/errors.go",
file := fset.AddFile(filename, fset.Base(), len(src)) } {
b.SetBytes(int64(len(src))) b.Run(p, func(b *testing.B) {
var s Scanner b.StopTimer()
b.StartTimer() filename := filepath.Join("..", "..", filepath.FromSlash(p))
for i := 0; i < b.N; i++ { src, err := os.ReadFile(filename)
s.Init(file, src, nil, ScanComments) if err != nil {
for { b.Fatal(err)
_, tok, _ := s.Scan()
if tok == token.EOF {
break
} }
} fset := token.NewFileSet()
file := fset.AddFile(filename, fset.Base(), len(src))
b.SetBytes(int64(len(src)))
var s Scanner
b.StartTimer()
for i := 0; i < b.N; i++ {
s.Init(file, src, nil, ScanComments)
for {
_, tok, _ := s.Scan()
if tok == token.EOF {
break
}
}
}
})
} }
} }