From: Roger Peppe Date: Tue, 4 Jul 2023 14:25:07 +0000 (+0100) Subject: strings: add benchmark for Builder.WriteString X-Git-Tag: go1.22rc1~1589 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=1e576efb6b7e683ac8331ff798bf9dfc075363d0;p=gostls13.git 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 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 --- 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++ {