aboutsummaryrefslogtreecommitdiff
path: root/src/strings/strings_test.go
diff options
context:
space:
mode:
authorAnuraag Agrawal <anuraaga@gmail.com>2022-06-10 05:41:02 +0000
committerGopher Robot <gobot@golang.org>2022-09-14 14:56:07 +0000
commit9503bcae2b20d290332d00d78672881b7fcfedf0 (patch)
treeff6b38dda4be3cfbc52698871aa95f4da775fa25 /src/strings/strings_test.go
parentd60e51e3539986fcca331cc27f4730a4fe266149 (diff)
downloadgo-9503bcae2b20d290332d00d78672881b7fcfedf0.tar.xz
strings: reuse the input string for Repeat count of 1
The existing implementation allocates a new string even when the count is 1, where we know the output is the same as the input. While we wouldn't expect a count of 1 for hardcoded values of the parameter, it is expected when the parameter is computed based on a different value (e.g., the length of a input slice). name old time/op new time/op delta Repeat/5x0-10 2.03ns ± 0% 2.02ns ± 0% ~ (p=1.000 n=1+1) Repeat/5x1-10 13.7ns ± 0% 2.0ns ± 0% ~ (p=1.000 n=1+1) Repeat/5x2-10 18.2ns ± 0% 18.1ns ± 0% ~ (p=1.000 n=1+1) Repeat/5x6-10 27.0ns ± 0% 27.0ns ± 0% ~ (p=1.000 n=1+1) Repeat/10x0-10 2.02ns ± 0% 2.02ns ± 0% ~ (p=1.000 n=1+1) Repeat/10x1-10 16.1ns ± 0% 2.0ns ± 0% ~ (p=1.000 n=1+1) Repeat/10x2-10 20.8ns ± 0% 20.9ns ± 0% ~ (p=1.000 n=1+1) Repeat/10x6-10 29.2ns ± 0% 29.4ns ± 0% ~ (p=1.000 n=1+1) Change-Id: I48e08e08f8f6d6914d62b3d6a61d563d637bec59 GitHub-Last-Rev: 068f58e08b8f5c4105e7a210f242ca1ff3a61177 GitHub-Pull-Request: golang/go#53321 Reviewed-on: https://go-review.googlesource.com/c/go/+/411477 Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Keith Randall <khr@google.com>
Diffstat (limited to 'src/strings/strings_test.go')
-rw-r--r--src/strings/strings_test.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/strings/strings_test.go b/src/strings/strings_test.go
index 8af81a556b..9323ff988d 100644
--- a/src/strings/strings_test.go
+++ b/src/strings/strings_test.go
@@ -1852,7 +1852,7 @@ func BenchmarkSplitNMultiByteSeparator(b *testing.B) {
func BenchmarkRepeat(b *testing.B) {
s := "0123456789"
for _, n := range []int{5, 10} {
- for _, c := range []int{1, 2, 6} {
+ for _, c := range []int{0, 1, 2, 6} {
b.Run(fmt.Sprintf("%dx%d", n, c), func(b *testing.B) {
for i := 0; i < b.N; i++ {
Repeat(s[:n], c)