From 87b71dd6b9e29478451a1340aa261bd733afadb2 Mon Sep 17 00:00:00 2001 From: dulanting Date: Thu, 30 Oct 2025 00:48:34 +0800 Subject: [PATCH] refactor: use strings.Builder to improve performance --- backend/s3/providers.go | 6 +++--- fs/asyncreader/asyncreader_test.go | 12 ++++++------ fs/parseduration.go | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/backend/s3/providers.go b/backend/s3/providers.go index 3d42aebe9..6c9eb8a17 100644 --- a/backend/s3/providers.go +++ b/backend/s3/providers.go @@ -178,7 +178,7 @@ func constructProviders(options fs.Options, providerMap map[string]*Provider) st } } - var providerList string + var providerList strings.Builder for _, p := range providers { for i := range options { @@ -189,7 +189,7 @@ func constructProviders(options fs.Options, providerMap map[string]*Provider) st Value: p.Name, Help: p.Description, }) - providerList += p.Name + ", " + providerList.WriteString(p.Name + ", ") case "region": addExample(opt, p, p.Region, defaults.Region) case "endpoint": @@ -232,5 +232,5 @@ func constructProviders(options fs.Options, providerMap map[string]*Provider) st } } - return strings.TrimSuffix(providerList, ", ") + return strings.TrimSuffix(providerList.String(), ", ") } diff --git a/fs/asyncreader/asyncreader_test.go b/fs/asyncreader/asyncreader_test.go index eae23b160..a6665e33b 100644 --- a/fs/asyncreader/asyncreader_test.go +++ b/fs/asyncreader/asyncreader_test.go @@ -150,13 +150,13 @@ func TestAsyncReaderSizes(t *testing.T) { var texts [31]string str := "" - all := "" + var all strings.Builder for i := range len(texts) - 1 { texts[i] = str + "\n" - all += texts[i] + all.WriteString(texts[i]) str += string(rune(i)%26 + 'a') } - texts[len(texts)-1] = all + texts[len(texts)-1] = all.String() for h := range len(texts) { text := texts[h] @@ -191,13 +191,13 @@ func TestAsyncReaderWriteTo(t *testing.T) { var texts [31]string str := "" - all := "" + var all strings.Builder for i := range len(texts) - 1 { texts[i] = str + "\n" - all += texts[i] + all.WriteString(texts[i]) str += string(rune(i)%26 + 'a') } - texts[len(texts)-1] = all + texts[len(texts)-1] = all.String() for h := range len(texts) { text := texts[h] diff --git a/fs/parseduration.go b/fs/parseduration.go index 7f8ba99d3..ab16f6dbe 100644 --- a/fs/parseduration.go +++ b/fs/parseduration.go @@ -158,11 +158,11 @@ func (d Duration) readableString(maxNumberOfUnits int) string { return "0s" } - readableString := "" + var readableString strings.Builder // Check for minus durations. if d < 0 { - readableString += "-" + readableString.WriteString("-") } duration := time.Duration(math.Abs(float64(d))) @@ -205,14 +205,14 @@ func (d Duration) readableString(maxNumberOfUnits int) string { if v == 0 { continue } - readableString += strval + u + readableString.WriteString(strval + u) numberOfUnits++ if maxNumberOfUnits > 0 && numberOfUnits >= maxNumberOfUnits { break } } - return readableString + return readableString.String() } // Set a Duration