首页 > 其他分享 >Benchmark 测试字符串拼接的性能

Benchmark 测试字符串拼接的性能

时间:2023-10-25 23:35:13浏览次数:42  
标签:12 ++ testing Benchmark 拼接 str 字符串 ns op

func BenchmarkStringf(b *testing.B) {
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		var str string
		for j := 0; j < numbers; j++ {
			str = fmt.Sprintf("%s%d", str, j)
		}
	}
	b.StopTimer()
}

func BenchmarkStringAdd(b *testing.B) {
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		var str string
		for j := 0; j < numbers; j++ {
			str = str + strconv.Itoa(j)
		}
	}
	
	b.StopTimer()
}

func BenchmarkStringBuilder(b *testing.B) {
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		var builder strings.Builder
		for j := 0; j < numbers; j++ {
			builder.WriteString(strconv.Itoa(j))

		}
		_ = builder.String()
	}
	b.StopTimer()
}

测试数据如下

使用fmt.Sprintf

image

使用字符串相加str = str + strconv.Itoa(j)

使用strings.Builder

命令行运行所有benchmark

➜  ch11 go test -bench='.*'
6666666
goos: linux
goarch: amd64
pkg: awesomeProject/ch11
cpu: AMD Ryzen 5 5600G with Radeon Graphics         
BenchmarkAdd-12                 1000000000               0.2320 ns/op
BenchmarkStringf-12                   49          22959820 ns/op
BenchmarkStringAdd-12                 61          22481787 ns/op
BenchmarkStringBuilder-12           5703            211218 ns/op
PASS
ok      awesomeProject/ch11     4.026s

总结

使用strings.Builder速度最快

标签:12,++,testing,Benchmark,拼接,str,字符串,ns,op
From: https://www.cnblogs.com/postkarte/p/17788392.html

相关文章

  • 前端面试题:数组、字符串方法
    数组1、push:末尾添加元素,改变原数组2、pop:删除并返回最后一个元素,改变原数组3、unshift:  开头添加一个元素,改变原数组4、shift:删除第一项,改变原数组5、concat:合并数组并生成一个新数组,不改变原数组6、join:  把......
  • Python中数值类型、布尔类型、字符串类型的特征及方法的使用
    数值类型包括int(整形)、float(浮点型)、complex(复数型)1.整型(int)整数就是没有小数部分的数字,Python中的整数包括正整数、0和负整数。为任意大小的整形数,可以表示成十进制八进制、十六进制和二进制。例:>>>0b1101+100 113>>>0x10+218>>>10+212>>>1_2_3_41234 2.......
  • mysql的regex匹配多个字符串且不包含子串
     mysql的regex匹配多个字符串且不包含子串,regex使用、mysqlregex使用、mysqlregex详解、regex的高级使用 camera_label字段是以逗号分割的字符串 1.查询包含 camera_2标签的数据select*fromdevice_info_datawherescope_type=2andcamera_labelREGEXP('came......
  • 由于正则表达式的匹配顺序,这个例子可能并不会按照你期望的方式工作。正则表达式会从左
    在Python中,你可以使用re模块的sub函数来替换字符串中的特定字符或字符串。以下是一个示例,它将字符串中的'a'、'b'和'ab'替换为'c':importres='abracadabra's=re.sub('a|b|ab','c',s)print(s)#打印替换后的字符串在这个例子中,'a|b|ab'是一个正则表......
  • jquery把json字符串转化为json对象需要注意的问题(json用单引号或双引号是不同的)
    1.将json字符串转化为json对象方案一:jquery自带的$.parseJSON函数varjsonstr="{\"id\":\"1\",\"name\":\"jack\"}";varobj=$.parseJSON(jsonstr);说明:使用该方法对json字符串的要求比较高,属性名和属性值必须使用双引号,使用单引号或者不是用引号都会出错 方案二:js自带的eval函......
  • Apple开发_字符串后缀如果包含有数字,提取出字符串后缀全部的数字
    NSString分类@implementationNSString(GC)-(NSString*)suffix_Num{//匹配字符串末尾的数字NSString*pattern=@"\\d+$";NSError*error=nil;NSRegularExpression*regex=[NSRegularExpressionregularExpressionWithPattern:patternoptions......
  • 基于Python的 如何检查字符串输入是否为数字
    一概念这种有很多常用的方法,这里只介绍一种常用的方法是使用正则表达式来匹配数字的模式。通过定义一个匹配数字的正则表达式,然后使用re模块中的search()方法来进行匹配。二例子:下面是一个简单的例子:#示例代码5importreinput_str=input("请输入一个字符......
  • 在Java中,如果一个日期是字符串类型的"2023-01",怎样获取前一个月
    在Java中,如果一个日期是字符串类型的"2023-01",你可以使用java.time包中的类来处理日期。以下是一个示例代码,演示如何获取前一个月的字符串类型的月份:importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;publicclassMain{publicstaticvoidmain(St......
  • C# 一个简陋轻便的Json字符串拼接类
    有的时候我们要以Json格式的形式传递参数,用模型或匿名类传给json库转的话,感觉很浪费,但是自己手动拼的话有比较麻烦,因此封装了一个拼接类,非常简陋JsonStringBuilderusingSystem;usingSystem.Text;namespaceConsoleApp{///<summary>///简单的json字符串构建......
  • 转换字符串为二进制编码字符串
    varfillZeroToEight=function(numStr){if(numStr.length>=8){returnnumStr;}vardiff=8-numStr.length;varzeroStr="";for(letindex=0;index<diff;index++){zeroStr+="0"......