diff options
Diffstat (limited to 'libgo/go/regexp/exec_test.go')
-rw-r--r-- | libgo/go/regexp/exec_test.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libgo/go/regexp/exec_test.go b/libgo/go/regexp/exec_test.go index 766394de6ee..5f8e747b17b 100644 --- a/libgo/go/regexp/exec_test.go +++ b/libgo/go/regexp/exec_test.go @@ -681,6 +681,35 @@ func BenchmarkMatch(b *testing.B) { } } +func BenchmarkMatch_onepass_regex(b *testing.B) { + isRaceBuilder := strings.HasSuffix(testenv.Builder(), "-race") + r := MustCompile(`(?s)\A.*\z`) + if r.get().op == notOnePass { + b.Fatalf("want onepass regex, but %q is not onepass", r) + } + for _, size := range benchSizes { + if isRaceBuilder && size.n > 1<<10 { + continue + } + 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.SetBytes(int64(size.n)) + b.ReportAllocs() + for i := 0; i < b.N; i++ { + for _, byts := range bs { + if !r.Match(byts) { + b.Fatal("not match!") + } + } + } + }) + } +} + var benchData = []struct{ name, re string }{ {"Easy0", "ABCDEFGHIJKLMNOPQRSTUVWXYZ$"}, {"Easy0i", "(?i)ABCDEFGHIJklmnopqrstuvwxyz$"}, |