golang字符串拼接的几种比较
package concat_string
import (
"bytes"
"fmt"
"strconv"
"strings"
"testing"
)
const numbers = 100
func BenchmarkSprintf(b *testing.B) {
b.ResetTimer()
for index := 0; index < b.N; index++ {
for i := 0; i < numbers; i++ {
var s string
s = fmt.Sprintf("%v%v", s, i)
}
}
b.StopTimer()
}
func BenchmarkStringBuilder(b *testing.B) {
b.ResetTimer()
for index := 0; index < b.N; index++ {
var builder strings.Builder
for i := 0; i < numbers; i++ {
builder.WriteString(strconv.Itoa(i))
}
}
b.StopTimer()
}
func BechmarkSytesBuf(b *testing.B) {
b.ResetTimer()
for index := 0; index < b.N; index++ {
var buf bytes.Buffer
for i := 0; i < numbers; i++ {
buf.WriteString(strconv.Itoa(i))
}
}
b.StopTimer()
}
func BechmarkStringAdd(b *testing.B) {
b.ResetTimer()
for index := 0; index < b.N; index++ {
var s string
for i := 0; i < numbers; i++ {
s += strconv.Itoa(i)
}
}
b.StopTimer()
}

通过比较我们发现string.Builder和bytes.Buffer性能最好

浙公网安备 33010602011771号