字符串拼接性能对比
笔者在日常工作中经常会遇到将数据进行批处理,即接收多个数据源发送的数据后合并批量操作。在一次针对字符串拼接时出现处理耗时达到 1s(偶发情况),在排查问题时发现在高并发的情况下由于使用了 +
直接对字符串进行拼接导致系统处理时间很慢,因此进行优化。
下面基于常用的字符串拼接进行性能对比:
1 | func BenchmarkSprintf(b *testing.B) { |
总结
在高并发情况下,使用 bytes.Buffer
进行字符串拼接的效率要比使用 +
或者 Sprintf
的效率高出好几倍。
1 | $ go test -benchmem -run=^$ -count=3 -bench "^Benchmar.*$" |