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性能最好

猜你喜欢

转载自www.cnblogs.com/lemonzwt/p/11432537.html