Commit 872a5479 authored by Russ Cox's avatar Russ Cox

regexp: fix BenchmarkMatch_onepass_regex

This benchmark - in contrast to all other benchmarks - was
running the regexp match on 1-byte substrings of the input
instead of the entire input. Worse, it was doing so by preallocating
a slice of slices of every 1-byte substring. Needless to say,
this does not accurately reflect what happens when the regexp
matcher is given a large input.

Change-Id: Icd5b95f0e43f554a6b93164916745941366e03d6
Reviewed-on: https://go-review.googlesource.com/c/139778
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent e2d70b8b
...@@ -692,18 +692,12 @@ func BenchmarkMatch_onepass_regex(b *testing.B) { ...@@ -692,18 +692,12 @@ func BenchmarkMatch_onepass_regex(b *testing.B) {
continue continue
} }
t := makeText(size.n) t := makeText(size.n)
bs := make([][]byte, len(t))
for i, s := range t {
bs[i] = []byte{s}
}
b.Run(size.name, func(b *testing.B) { b.Run(size.name, func(b *testing.B) {
b.SetBytes(int64(size.n)) b.SetBytes(int64(size.n))
b.ReportAllocs() b.ReportAllocs()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
for _, byts := range bs { if !r.Match(t) {
if !r.Match(byts) { b.Fatal("not match!")
b.Fatal("not match!")
}
} }
} }
}) })
......
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