Golang字符串拼接

Golang中字符串的拼接存在很多种方法,性能也存在明显的差异。考虑一种场景,需要连续地拼接大量字符串。

不同字符串拼接的性能对比

采用操作符+拼接

func BenchmarkConcatenateStringByPlus(b *testing.B) {var testStr stringfor i := 0; i < b.N; i++ {// Concatenating strings using + operator.testStr += "test"}
}

采用strings.Join函数

func BenchmarkConcatenateStringByJoin(b *testing.B) {// Creating and initializing slice of stringvar testSlice []stringfor i := 0; i < b.N; i++ {testSlice = append(testSlice, "test")}str := strings.Join(testSlice, "")_ = str
}

采用bytes.BufferWriteString函数

func BenchmarkConcatenateStringByBuffer(b *testing.B) {// Creating and initializing strings using bytes.Buffer with writeString() function.var testBuffer bytes.Bufferfor i := 0; i < b.N; i++ {testBuffer.WriteString("test")}
}

采用strings.BuilderWriteString函数

func BenchmarkConcatenateStringByBuilder(b *testing.B) {// Using strings.Buildervar testBuilder strings.Builderfor i := 0; i < b.N; i++ {testBuilder.WriteString("test")}
}

运行golang命令go test -bench=. -v得到各个案例的性能得分。

BenchmarkConcatenateStringByPlus-16               409539             88628 ns/op
BenchmarkConcatenateStringByJoin-16             13896931                92.5 ns/op
BenchmarkConcatenateStringByBuffer-16           145830595                9.34 ns/op
BenchmarkConcatenateStringByBuilder-16          363210975               10.7 ns/op

根据压测结果,在需要频繁拼接字符串的场景下,WriteString显然是最优的选择,相较于前两种存在数量级的差距。

Golang字符串拼接相关推荐

  1. Golang字符串拼接的方法

    Golang字符串拼接的方法 three := []string{"a", "b1"}four := []string{"c01", &qu ...

  2. golang 字符串拼接方式

    最近在做性能优化,有个函数里面的耗时特别长,看里面的操作大多是一些字符串拼接的操作,而字符串拼接在 golang 里面其实有很多种实现. 实现方法 1.直接使用运算符 func BenchmarkAd ...

  3. golang字符串拼接方式

    字符串拼接是字符的常见操作.在golang中,遇见了字符串拼接.作为一个长期的C程序员,我第一反应是:字符串拼接函数strcat,但发现golang并无字符串拼接函数. 我想起了最简单的方法,通过+操 ...

  4. golang 字符串拼接性能比较

    背景 最近在做一个服务发现/注册的agent, 各个服务需要通过这个agent来注册自己的服务,在完成 开发后,测试性能时发现性能达不到要求,通过pprof 来确认cpu主要耗费在gc上,分析结果主要 ...

  5. go拼接字符串不如php,golang 字符串拼接性能的对比分析

    背景 最近在做一个服务发现/注册的agent, 各个服务需要通过这个agent来注册自己的服务,在完成 开发后,测试性能时发现性能达不到要求,通过pprof 来确认cpu主要耗费在gc上,分析结果主要 ...

  6. golang 字符串拼接 字符串数组转字符串

    1.字符串拼接 一般对于少量的字符串拼接可以直接用+来连接,不过最好的方法还是Builder. 用buffer.Builder,官方建议用这个. package mainimport ("f ...

  7. golang字符串拼接,字符串数组转字符串

    1.字符串拼接 一般对于少量的字符串拼接可以直接用+来连接,不过最好的方法还是Builder. 用buffer.Builder,官方建议用这个. package mainimport ("f ...

  8. Golang 字符串拼接

    引入 Golang中的string类型是只读且不可变的.因此通过循环字符串切片拼接字符串的方式会导致大量的string创建.销毁和内存分配 通过bytes.Buffer优化 使用var bs byte ...

  9. golang中的字符串拼接

    go语言中支持的字符串拼接的方法有很多种,这里就来罗列一下 常用的字符串拼接方法 1.最常用的方法肯定是 + 连接两个字符串.这与python类似,不过由于golang中的字符串是不可变的类型,因此用 ...

最新文章

  1. 网站SEO文章关键词布局优化的技巧指南
  2. Linux日常运维管理技巧(三)iptables规则备份和恢复、firewalld的9个zone、任务计划cron、chkconfig系统服务管理、添加服务命令、systemctl管理服务
  3. 中台不火,天理难容!
  4. SpringBoot (一) :入门篇
  5. MongoDB 3.0 新特性【转】
  6. 文献阅读 An incremental density-based clustering framework using fuzzy local clustering
  7. AIDE手机编程初级教程(零基础向) 引入篇
  8. EPLAN教程——工具栏详解(2)默认工具栏
  9. 使用Ballerina CLI工具开发Ballerina项目
  10. 安卓java百度地图api文档_Android调用百度地图API 实时定位代码
  11. 第四章第三节数据资产盘点-业务价值链、数据场景梳理
  12. 不带ui的服务器系统,win不含ui的云服务器
  13. 软件工程网络15个人案例作业3(201521123045 郑子熙)
  14. VSCode远程连接报错
  15. 小企业如何利用区块链和大数据获利?
  16. MCAL知识点(十九):SENT驱动详细配置
  17. 德国4-0葡萄牙 穆勒帽子戏法佩佩染红
  18. 【汇编】OllyDbg使用方法
  19. 我差点错过高校毕业生毕业之后这个3000元现金直接打入银行卡的补贴!
  20. git 进阶系列教程-------git使用流程

热门文章

  1. 小米装linux双系统,小米9双系统发布
  2. 4.3 脉冲响应不变法
  3. 虚拟运营商治理170垃圾短信推举报平台
  4. 山科c语言题库,计算机培训 所有C语言题库
  5. centos发现网络连不上了,重启网络服务报错“systemctl status network.service” and “journalctl -xe” for details. [失败]
  6. 黑马程序员_程序代码实现进制转换
  7. intellij idea weblogic 下面 怎么远程断点
  8. 用go实现linux命令行
  9. CTF网络安全大赛介绍
  10. wxc-cell使用