diff options
| author | Roger Peppe <rogpeppe@gmail.com> | 2023-07-04 15:25:07 +0100 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2023-07-20 18:00:40 +0000 |
| commit | 1e576efb6b7e683ac8331ff798bf9dfc075363d0 (patch) | |
| tree | f85c79671b97e88afcb2cc7a3ce07cf02c58f6ad /src/strings | |
| parent | 47b403ad2dba61e653ec24da7d84cb9decea4939 (diff) | |
| download | go-1e576efb6b7e683ac8331ff798bf9dfc075363d0.tar.xz | |
strings: add benchmark for Builder.WriteString
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>
Diffstat (limited to 'src/strings')
| -rw-r--r-- | src/strings/builder_test.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/strings/builder_test.go b/src/strings/builder_test.go index dbc2c1943b..c3c627ee7d 100644 --- a/src/strings/builder_test.go +++ b/src/strings/builder_test.go @@ -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++ { |
