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

外贸那些网站好用北京单位网站建设培训

外贸那些网站好用,北京单位网站建设培训,dk域名网站,平面艺术设计简介 使用完整的基准测试代码文件,可以直接运行来比较四种字符串拼接方法的性能。 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/513653.html

相关文章:

  • C++之智能指针
  • 【Threejs-sdk】使用 mogl.js 创建灯光与Hdr:Lighting HDR
  • 兼职做ppt是哪个网站好做网站关键字
  • 网站的网站搭建手机微信管理系统
  • 函数式接口
  • 哪些网站建设公司阿凡达营销网站
  • 网站怎么做sem写作挣钱的网站
  • 三网合一网站建设河南建设工程信息网 建议访问中项网
  • 东圃手机网站建设电话西安做网站选哪家好
  • 查询网站后台登陆地址做pc端网站教程
  • 德清网站制作实力网站优化公司首选
  • [人工智能-大模型-32]:大模型应用层技术栈 - 智能决策层(AI Agent)- 搭建实例
  • wordpress导航类网站旅游景区网站建设规划
  • 校园类网站模板免费下载怎么让网站被收录
  • 滕州盛扬网络公司网站建设推广秀堂h5官网
  • 酒店如何做网站新建网站
  • 专业系统网站好无锡营销型网站价格
  • 两个域名指向同一个网站简体转繁体wordpress插件
  • 杭州网站排名优化网站seo诊断书
  • Linux下的DNS配置文件/etc/resolv.conf详解(2)
  • 如何做正规的采集网站展示营销型网站
  • 网站建设淘宝属于什么类目北京西站官网主页
  • 全链路智能运维中的日志隐私数据自动脱敏与合规性保障技术
  • vps网站管理助手制作公司app
  • 做网站都要买服务器吗哪些网站可以医生做兼职
  • 【开题答辩实录分享】以《自媒体企业管理信息系统》为例进行答辩实录分享
  • C++ 实际应用系列(五):多线程环境下的内存管理实战
  • 沈阳网站制作聚艺科技建设银行网站机构特点业务发展
  • 网站建设公司做ppt吗济南建设局网站公式
  • large-scale-DRL-exploration代码阅读(三)