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

posted @ 2019-08-29 22:57  不骄不傲  阅读(702)  评论(0编辑  收藏  举报