Go字符串拼接6种方式及其性能测试:strings.builder最快
创始人
2024-04-16 16:14:29
0

Go字符串拼接常见的方式有加号、fmt.Sprintf、strings.Builder、bytes.Buffer、strings.join、切片。

package concat_stringimport ("bytes""fmt""strconv""strings""testing"
)const numbers = 100// +
func BenchmarkStringAdd(b *testing.B) {b.ResetTimer()for idx := 0; idx < b.N; idx++ {var s stringfor i := 0; i < numbers; i++ {s += strconv.Itoa(i)}}b.StopTimer()
}// fmt.Sprintf
func BenchmarkSprintf(b *testing.B) {b.ResetTimer()for idx := 0; idx < b.N; idx++ {var s stringfor i := 0; i < numbers; i++ {s = fmt.Sprintf("%v%v", s, i)}}b.StopTimer()
}// strings.Builder
func BenchmarkStringBuilder(b *testing.B) {b.ResetTimer()for idx := 0; idx < b.N; idx++ {var builder strings.Builderfor i := 0; i < numbers; i++ {builder.WriteString(strconv.Itoa(i))}_ = builder.String()}b.StopTimer()
}// bytes.Buffer
func BenchmarkBytesBuf(b *testing.B) {b.ResetTimer()for idx := 0; idx < b.N; idx++ {var buf bytes.Bufferfor i := 0; i < numbers; i++ {buf.WriteString(strconv.Itoa(i))}_ = buf.String()}b.StopTimer()
}// strings.join
func BenchmarkStringsJoin(b *testing.B) {b.ResetTimer()var strs []stringfor i := 0; i < b.N; i++ {strs = append(strs, strconv.Itoa(i))}_ = strings.Join(strs, "")b.StopTimer()
}// 切片
func BenchmarkByteSliceString(b *testing.B) {b.ResetTimer()buf := make([]byte, 0)for i := 0; i < b.N; i++ {buf = append(buf, byte(i))}_ = string(buf)b.StopTimer()
}
go test -bench=.

1
244851 4725 ns/op 表示单位时间内(默认是1s)被测函数运行了 244851次,每次运行耗时 4725ns
总耗时10.261s。
https://www.cnblogs.com/cheyunhua/p/15769717.html
http://t.zoukankan.com/yahuian-p-go-benchmark.html

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...