当前位置: 首页 > news >正文

通用搭建网站教程承德信息网络有限公司

通用搭建网站教程,承德信息网络有限公司,温州云海和联欣哪个做网站比较好,石家庄网站制作找谁简介 使用完整的基准测试代码文件,可以直接运行来比较四种字符串拼接方法的性能。 for 索引 的方式 for range 的方式 strings.Join 的方式 strings.Builder 的方式 写一个基准测试文件 echo_bench_test.go package mainimport ("os""stri…

简介

使用完整的基准测试代码文件,可以直接运行来比较四种字符串拼接方法的性能。

  • for 索引 += 的方式

  • for range += 的方式

  • strings.Join 的方式

  • strings.Builder 的方式

写一个基准测试文件

echo_bench_test.go

package mainimport ("os""strings""testing"
)func echoAll1() string {var s, sep stringfor i := 0; i < len(os.Args); i++ {s += sep + os.Args[i]sep = " "}return s
}func echoAll2() string {s, sep := "", ""for _, arg := range os.Args[:] {s += sep + argsep = " | "}return s
}func echoAll3() string {return strings.Join(os.Args[:], " , ")
}// strings.Builder 是 Go 推荐的高效字符串拼接方式,尤其在循环中拼接时,
// 可以减少内存分配。func echoAll4() string {var builder strings.Builderfor i, arg := range os.Args[:] {if i > 0 {builder.WriteString(" <> ")}builder.WriteString(arg)}return builder.String()
}// ===== Benchmark Functions =====func BenchmarkEchoAll1(b *testing.B) {// 模拟更长参数列表,避免误差过大originalArgs := os.Argsos.Args = make([]string, 100)for i := range os.Args {os.Args[i] = "arg"}b.ResetTimer()for i := 0; i < b.N; i++ {_ = echoAll1()}os.Args = originalArgs // 恢复
}func BenchmarkEchoAll2(b *testing.B) {originalArgs := os.Argsos.Args = make([]string, 100)for i := range os.Args {os.Args[i] = "arg"}b.ResetTimer()for i := 0; i < b.N; i++ {_ = echoAll2()}os.Args = originalArgs
}func BenchmarkEchoAll3(b *testing.B) {originalArgs := os.Argsos.Args = make([]string, 100)for i := range os.Args {os.Args[i] = "arg"}b.ResetTimer()for i := 0; i < b.N; i++ {_ = echoAll3()}os.Args = originalArgs
}func BenchmarkEchoAll4(b *testing.B) {originalArgs := os.Argsos.Args = make([]string, 100)for i := range os.Args {os.Args[i] = "arg"}b.ResetTimer()for i := 0; i < b.N; i++ {_ = echoAll4()}os.Args = originalArgs
}

运行基准测试

go test -bench=. -benchmem

示例输出结果(不同机器会略有不同):

goos: darwin
goarch: amd64
pkg: example
BenchmarkEchoAll1-8     500000     3500 ns/op     120 B/op     5 allocs/op
BenchmarkEchoAll2-8     700000     2400 ns/op     104 B/op     4 allocs/op
BenchmarkEchoAll3-8    1000000     1600 ns/op      80 B/op     2 allocs/op
BenchmarkEchoAll4-8    2000000      800 ns/op      32 B/op     1 allocs/opPASS
ok  	example	3.456s

每一行含义:

字段含义
BenchmarkEchoAll1测试函数名
-8使用的 CPU 线程数(8 核)
500000b.N 的值,代表该函数跑了 50 万次
3500 ns/op每次调用耗时 3500 纳秒
120 B/op每次操作分配的字节数(字节越少越好)
5 allocs/op每次操作的内存分配次数(次数越少越好)

Go 的基准测试自动决定运行次数(b.N),直到结果足够稳定。

方法ns/opB/opallocs/op说明
EchoAll13500 ns120 B5+= 每次创建新字符串,开销大
EchoAll22400 ns104 B4range + +=,仍然多次内存分配
EchoAll31600 ns80 B2Join 比较高效
EchoAll4800 ns32 B1strings.Builder 最优
http://www.dtcms.com/a/538760.html

相关文章:

  • 门户网站建设管理典型经验长沙微网站开发
  • c语言做网站吗怎么做门户网站设计方案
  • WordPress搭建手机网站苏州百度关键词优化
  • 网站建设和平面设计企业年报系统登录
  • 如何建设传奇网站奉贤做网站公司
  • 重庆网站建设子沃科技在线翻墙
  • php语言 电商网站建设淘宝客wordpress末班
  • 网站底部关键词好视通视频会议app下载安装
  • 招商加盟网站怎么做建设银行企业网站打不开
  • 可以做众筹的网站有哪些私活网站开发多少钱
  • 创新的常州做网站闸北区网站建设
  • 罗湖附近公司做网站建设哪家服务周到国内商务网络公司排名
  • 东莞免费建站在线咨询做网站怎么入账
  • 网站模板开发主要作用织梦网站去除技术支持
  • 电影里的做视频在线观看网站快速开发软件
  • 初二怎么做网站接广告的网站
  • 广西建设学院官方网站网上做任务网站有哪些
  • 充实网站 廉政建设 板块公司网站推广现状
  • 创建网站花费网络公司名
  • 百度网址大全官方网站巩义企业网站托管服务商
  • 什么网站可以做名片做网站如何上传apk
  • wapcms建站系统西安公司网站建设服务商
  • 外贸网站建设排名上海摄影网站建设
  • 网站推广策划的策略锦州做网站多少钱
  • 福建网站建设公司排名响应式网站设计建设制作
  • 阜新网站seo网站开发需要学习
  • 公司域名更改 网站怎么做提示wordpress 最好的插件
  • 网站页面设计具体步骤佛山新网站建设效果
  • 广州网站建设(信科分公司)百度网盟网站有哪些
  • app对接网站登录要怎么做视频变成网站怎么做的