From 1e576efb6b7e683ac8331ff798bf9dfc075363d0 Mon Sep 17 00:00:00 2001 From: Roger Peppe Date: Tue, 4 Jul 2023 15:25:07 +0100 Subject: [PATCH] strings: add benchmark for Builder.WriteString MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Change-Id: I0e2c82edcdc72f381c5160f315401678ff76f3d9 Reviewed-on: https://go-review.googlesource.com/c/go/+/507777 Auto-Submit: Ian Lance Taylor Reviewed-by: Heschi Kreinick Reviewed-by: Ian Lance Taylor TryBot-Result: Gopher Robot --- src/strings/builder_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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++ { -- 2.48.1