From c641d48afdf05de8aa15b4110cb07a2165c5f935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sun, 8 Jan 2023 22:56:40 +0000 Subject: [PATCH] go/types: use internal/lazyregexp for goVersionRx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With benchinit, we see a noticeable improvement in init times: name old time/op new time/op delta GoTypes 83.4µs ± 0% 43.7µs ± 1% -47.57% (p=0.029 n=4+4) name old alloc/op new alloc/op delta GoTypes 26.5kB ± 0% 18.8kB ± 0% -29.15% (p=0.029 n=4+4) name old allocs/op new allocs/op delta GoTypes 238 ± 0% 154 ± 0% -35.29% (p=0.029 n=4+4) Port the same change to cmd/compile/internal/types and types2. Updates #26775. Change-Id: Ia1f7c4a4ce9a22d66e2aa9c9b9c341036993adca Reviewed-on: https://go-review.googlesource.com/c/go/+/460544 TryBot-Result: Gopher Robot Reviewed-by: Robert Findley Run-TryBot: Robert Findley Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/types/goversion.go | 4 ++-- src/cmd/compile/internal/types2/version.go | 4 ++-- src/go/build/deps_test.go | 2 +- src/go/types/version.go | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/cmd/compile/internal/types/goversion.go b/src/cmd/compile/internal/types/goversion.go index 3ece95bf0ac815..c57493a5cb2a6e 100644 --- a/src/cmd/compile/internal/types/goversion.go +++ b/src/cmd/compile/internal/types/goversion.go @@ -7,8 +7,8 @@ package types import ( "fmt" "internal/goversion" + "internal/lazyregexp" "log" - "regexp" "strconv" "cmd/compile/internal/base" @@ -81,4 +81,4 @@ func currentLang() string { // goVersionRE is a regular expression that matches the valid // arguments to the -lang flag. -var goVersionRE = regexp.MustCompile(`^go([1-9]\d*)\.(0|[1-9]\d*)$`) +var goVersionRE = lazyregexp.New(`^go([1-9]\d*)\.(0|[1-9]\d*)$`) diff --git a/src/cmd/compile/internal/types2/version.go b/src/cmd/compile/internal/types2/version.go index b649f09c3aa95a..8fd76a381d9680 100644 --- a/src/cmd/compile/internal/types2/version.go +++ b/src/cmd/compile/internal/types2/version.go @@ -7,7 +7,7 @@ package types2 import ( "cmd/compile/internal/syntax" "fmt" - "regexp" + "internal/lazyregexp" "strconv" "strings" ) @@ -78,4 +78,4 @@ func parseGoVersion(s string) (v version, err error) { } // goVersionRx matches a Go version string, e.g. "go1.12". -var goVersionRx = regexp.MustCompile(`^go([1-9][0-9]*)\.(0|[1-9][0-9]*)$`) +var goVersionRx = lazyregexp.New(`^go([1-9][0-9]*)\.(0|[1-9][0-9]*)$`) diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 23e0dee1d2f28c..c269d6b6e4e6ff 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -278,7 +278,7 @@ var depsRules = ` math/big, go/token < go/constant; - container/heap, go/constant, go/parser, internal/types/errors, regexp + container/heap, go/constant, go/parser, internal/types/errors, internal/lazyregexp < go/types; FMT, internal/goexperiment diff --git a/src/go/types/version.go b/src/go/types/version.go index 3958ec922cb75f..256c3ec05d3f53 100644 --- a/src/go/types/version.go +++ b/src/go/types/version.go @@ -8,8 +8,8 @@ import ( "fmt" "go/ast" "go/token" + "internal/lazyregexp" . "internal/types/errors" - "regexp" "strconv" "strings" ) @@ -80,4 +80,4 @@ func parseGoVersion(s string) (v version, err error) { } // goVersionRx matches a Go version string, e.g. "go1.12". -var goVersionRx = regexp.MustCompile(`^go([1-9]\d*)\.(0|[1-9]\d*)$`) +var goVersionRx = lazyregexp.New(`^go([1-9]\d*)\.(0|[1-9]\d*)$`)