Go字符串拼接6种方式及其性能测试:strings.builder最快
创始人
2024-03-15 15:04:45
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

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...