From f586a473cf8dc9ac1edf893f70ccf37c2e217035 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 14 Sep 2021 15:15:29 +0200 Subject: [PATCH] pkg/namesgenerator: replace uses of fmt.Sprintf() Looks like we don't need sprintf for how it's used. Replacing sprintf makes it more performant (~2.4x as fast), and less memory, allocations: BenchmarkGetRandomName-8 8203230 142.4 ns/op 37 B/op 2 allocs/op BenchmarkGetRandomNameOld-8 3499509 342.9 ns/op 85 B/op 5 allocs/op Signed-off-by: Sebastiaan van Stijn --- pkg/namesgenerator/names-generator.go | 6 +++--- pkg/namesgenerator/names-generator_test.go | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/namesgenerator/names-generator.go b/pkg/namesgenerator/names-generator.go index 070829e0ed..93c0d75719 100644 --- a/pkg/namesgenerator/names-generator.go +++ b/pkg/namesgenerator/names-generator.go @@ -1,8 +1,8 @@ package namesgenerator // import "github.com/docker/docker/pkg/namesgenerator" import ( - "fmt" "math/rand" + "strconv" ) var ( @@ -840,13 +840,13 @@ var ( // integer between 0 and 10 will be added to the end of the name, e.g `focused_turing3` func GetRandomName(retry int) string { begin: - name := fmt.Sprintf("%s_%s", left[rand.Intn(len(left))], right[rand.Intn(len(right))]) //nolint:gosec // G404: Use of weak random number generator (math/rand instead of crypto/rand) + name := left[rand.Intn(len(left))] + "_" + right[rand.Intn(len(right))] //nolint:gosec // G404: Use of weak random number generator (math/rand instead of crypto/rand) if name == "boring_wozniak" /* Steve Wozniak is not boring */ { goto begin } if retry > 0 { - name = fmt.Sprintf("%s%d", name, rand.Intn(10)) //nolint:gosec // G404: Use of weak random number generator (math/rand instead of crypto/rand) + name += strconv.Itoa(rand.Intn(10)) //nolint:gosec // G404: Use of weak random number generator (math/rand instead of crypto/rand) } return name } diff --git a/pkg/namesgenerator/names-generator_test.go b/pkg/namesgenerator/names-generator_test.go index 6ee31e9c33..8702697745 100644 --- a/pkg/namesgenerator/names-generator_test.go +++ b/pkg/namesgenerator/names-generator_test.go @@ -25,3 +25,12 @@ func TestNameRetries(t *testing.T) { } } + +func BenchmarkGetRandomName(b *testing.B) { + b.ReportAllocs() + var out string + for n := 0; n < b.N; n++ { + out = GetRandomName(5) + } + b.Log("Last result:", out) +}