]> Cypherpunks repositories - gostls13.git/commit
strings: add Builder benchmarks comparing bytes.Buffer and strings.Builder
authorBrad Fitzpatrick <bradfitz@golang.org>
Sun, 25 Feb 2018 16:41:22 +0000 (16:41 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 26 Feb 2018 18:00:12 +0000 (18:00 +0000)
commitb1accced20f0b2fc011b32e1f1d9bb83385efa1d
tree192341944d3d44e8d194db9c51355b4128e8a2b6
parent495eb3f922c8362949812fe65237d2158e25afe5
strings: add Builder benchmarks comparing bytes.Buffer and strings.Builder

Despite the existing test that locks in the allocation behavior, people
really want a benchmark. So:

BenchmarkBuildString_Builder/1Write_NoGrow-4    20000000  60.4 ns/op   48 B/op  1 allocs/op
BenchmarkBuildString_Builder/3Write_NoGrow-4    10000000   230 ns/op  336 B/op  3 allocs/op
BenchmarkBuildString_Builder/3Write_Grow-4      20000000   102 ns/op  112 B/op  1 allocs/op
BenchmarkBuildString_ByteBuffer/1Write_NoGrow-4 10000000   125 ns/op  160 B/op  2 allocs/op
BenchmarkBuildString_ByteBuffer/3Write_NoGrow-4  5000000   339 ns/op  400 B/op  3 allocs/op
BenchmarkBuildString_ByteBuffer/3Write_Grow-4    5000000   316 ns/op  336 B/op  3 allocs/op

I don't think these allocate-as-fast-as-you-can benchmarks are very
interesting because they're effectively just GC benchmarks, but sure.
If one wants to see that there's 1 fewer allocation, there it is. The
ns/op and B/op numbers will change as the built string size changes.

Updates #18990

Change-Id: Ifccf535bd396217434a0e6989e195105f90132ae
Reviewed-on: https://go-review.googlesource.com/96980
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
src/strings/builder_test.go