summaryrefslogtreecommitdiff
path: root/libgo/go/regexp/onepass_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/regexp/onepass_test.go')
-rw-r--r--libgo/go/regexp/onepass_test.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/libgo/go/regexp/onepass_test.go b/libgo/go/regexp/onepass_test.go
index f4e336c43ba..b1caa445150 100644
--- a/libgo/go/regexp/onepass_test.go
+++ b/libgo/go/regexp/onepass_test.go
@@ -7,6 +7,7 @@ package regexp
import (
"reflect"
"regexp/syntax"
+ "strings"
"testing"
)
@@ -173,6 +174,7 @@ var onePassTests = []struct {
{`^.bc(d|e)*$`, onePass},
{`^(?:(?:aa)|.)$`, notOnePass},
{`^(?:(?:a{1,2}){1,2})$`, notOnePass},
+ {`^l` + strings.Repeat("o", 2<<8) + `ng$`, onePass},
}
func TestCompileOnePass(t *testing.T) {
@@ -223,3 +225,23 @@ func TestRunOnePass(t *testing.T) {
}
}
}
+
+func BenchmarkCompileOnepass(b *testing.B) {
+ for _, test := range onePassTests {
+ if test.onePass == notOnePass {
+ continue
+ }
+ name := test.re
+ if len(name) > 20 {
+ name = name[:20] + "..."
+ }
+ b.Run(name, func(b *testing.B) {
+ b.ReportAllocs()
+ for i := 0; i < b.N; i++ {
+ if _, err := Compile(test.re); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ }
+}