- 使用buffer或是builder来拼接字符串,会比使用+或+=快
func BenchmarkBuffer(b *testing.B) {
text := "test"
b.ResetTimer()
buffer := bytes.Buffer{}
for i := 0; i < b.N; i++ {
buffer.WriteString(text)
}
buffer.String()
}
func BenchmarkBuilder(b *testing.B) {
text := "test"
b.ResetTimer()
builder := strings.Builder{}
for i := 0; i < b.N; i++ {
builder.WriteString(text)
}
builder.String()
}
func BenchmarkString(b *testing.B) {
text := "test"
b.ResetTimer()
for i := 0; i < b.N; i++ {
text += "test"
}
}
结果
goos: windows
goarch: amd64
pkg: test/one
BenchmarkBuffer
BenchmarkBuffer-12 181560793 8.03 ns/op
BenchmarkBuilder
BenchmarkBuilder-12 360210758 3.86 ns/op
BenchmarkString
BenchmarkString-12 3538