]> Cypherpunks repositories - gostls13.git/commitdiff
strings: add benchmark for Builder.WriteString
authorRoger Peppe <rogpeppe@gmail.com>
Tue, 4 Jul 2023 14:25:07 +0000 (15:25 +0100)
committerGopher Robot <gobot@golang.org>
Thu, 20 Jul 2023 18:00:40 +0000 (18:00 +0000)
This is in preparation for an optimization.

```
name                                     time/op
BuildString_WriteString/1Write_NoGrow-8  30.8ns ± 0%
BuildString_WriteString/3Write_NoGrow-8   111ns ± 0%
BuildString_WriteString/3Write_Grow-8    44.1ns ± 4%

name                                     alloc/op
BuildString_WriteString/1Write_NoGrow-8   48.0B ± 0%
BuildString_WriteString/3Write_NoGrow-8    336B ± 0%
BuildString_WriteString/3Write_Grow-8      112B ± 0%

name                                     allocs/op
BuildString_WriteString/1Write_NoGrow-8    1.00 ± 0%
BuildString_WriteString/3Write_NoGrow-8    3.00 ± 0%
BuildString_WriteString/3Write_Grow-8      1.00 ± 0%
```

Signed-off-by: Roger Peppe <rogpeppe@gmail.com>
Change-Id: I0e2c82edcdc72f381c5160f315401678ff76f3d9
Reviewed-on: https://go-review.googlesource.com/c/go/+/507777
Auto-Submit: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/strings/builder_test.go

index dbc2c1943b5940dba10a2e7041881b40867bc8b5..c3c627ee7d8b1a1a6025c901a42ffc8516972eb8 100644 (file)
@@ -355,6 +355,22 @@ func BenchmarkBuildString_Builder(b *testing.B) {
        })
 }
 
+func BenchmarkBuildString_WriteString(b *testing.B) {
+       someString := string(someBytes)
+       benchmarkBuilder(b, func(b *testing.B, numWrite int, grow bool) {
+               for i := 0; i < b.N; i++ {
+                       var buf Builder
+                       if grow {
+                               buf.Grow(len(someString) * numWrite)
+                       }
+                       for i := 0; i < numWrite; i++ {
+                               buf.WriteString(someString)
+                       }
+                       sinkS = buf.String()
+               }
+       })
+}
+
 func BenchmarkBuildString_ByteBuffer(b *testing.B) {
        benchmarkBuilder(b, func(b *testing.B, numWrite int, grow bool) {
                for i := 0; i < b.N; i++ {