Go基准测试需用testing.Benchmar函数和go test -bench命令,要求函数名以Benchmark开头、参数为*testing.B、循环用b.N而非固定值,Go自动调整b.N使总时长约1秒以确保结果可信。
在 Go 中做基准测试,核心是用 testing 包提供的 Benchmark 函数,配合 go test -bench 命令运行。关键不是“跑一次看耗时”,而是让测试在可控、可复现的条件下反复执行,从而获得稳定、有统计意义的性能数据。
基准测试函数必须满足三个条件:函数名以 Benchmark 开头;参数类型是 *testing.B;函数体里必须调用 b.N 控制循环次数(不能硬写固定次数)。Go 会自动调整 b.N 的值,使单次运行时间足够长(默认目标约 1 秒),保证结果可信。
例如,测试字符串拼接性能:
func BenchmarkStringConcat(b *testing.B) {
for i := 0; i < b.N; i++ {
s := "hello" + "world" + strconv.Itoa(i)
_ = s // 防止被编译器优化掉
}
}
_ = s 或其他方式“使用”结果,否则 Go 可能直接优化掉整个循环b.ResetTimer() 前完成准备,避免把初始化时间计入基准执行命令:go test -bench=^BenchmarkStringConcat$ -benchmem(-benchmem 显示内存分配)
典型输出:
BenchmarkStringConcat-8 10000000 124 ns/op 16 B/op 2 allocs/op
10000000:实际执行了约一千万次124 ns/op:每次操作平均耗时 124 纳秒16 B/op:每次操作分配 16 字节内存2 allocs/op:每次操作发生 2 次内存分配数字越小通常越好,但要注意对比必须在同一台机器、相同 Go 版本、关闭无关进程下进行。
想比较 strings.Join 和 + 拼接?可以写多个独立函数,也可以用 b.Run 组织子测试,结构更清晰:
func BenchmarkConcatMethods(b *testing.B) {
parts := []string{"a", "b", "c", "d"}
b.Run("plus", func(b *testing.B) {
for i := 0; i < b.N; i++ {
s := parts[0] + parts[1] + parts[2] + parts[3]
_ = s
}
})
b.Run("strings_Join", func(b *testing.B) {
for i := 0; i < b.N; i++ {
s := strings.Join(parts, "")
_ = s
}
})
}
-bench=. 即可看到两个子项的独立结果b.N,互不影响基准测试容易误判,常见问题包括:
runtime.GC() 在 b.ResetTimer() 前手动触发一次,或加 -gcflags="-l" 关闭内联干扰(调试用)taskset -c 0 go test ... 绑定单核减少干扰go test -bench 结果可能有偏差。可用 -count=5 运行 5 次取中位数,或结合 benchstat 工具分析差异显著性
时写集成级 benchmark,贴近真实负载
# go
# golang
# 字节
# 工具
# 常见问题
# 有锁
# count
# 字符串
# 循环
# 切片
# map
# 对象
# 算法
# 多个
# 进阶
# 这是
# 你要
# 可以用
# 能有
# 越好
# 别忘了
# 而非
# 但要
相关文章:
建站之星后台密码如何安全设置与找回?
建站之星图片链接生成指南:自助建站与智能设计教程
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
c# 在ASP.NET Core中管理和取消后台任务
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
详解jQuery停止动画——stop()方法的使用
建站VPS推荐:2025年高性能服务器配置指南
建站之星安装步骤有哪些常见问题?
h5在线制作网站电脑版下载,h5网页制作软件?
非常酷的网站设计制作软件,酷培ai教育官方网站?
ppt制作免费网站有哪些,ppt模板免费下载网站?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
临沂网站制作公司有哪些,临沂第四中学官网?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何高效完成自助建站业务培训?
javascript基本数据类型及类型检测常用方法小结
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
制作网站外包平台,自动化接单网站有哪些?
建站之星后台管理系统如何操作?
西安大型网站制作公司,西安招聘网站最好的是哪个?
金*站制作公司有哪些,金华教育集团官网?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
建站主机功能解析:服务器选择与快速搭建指南
如何获取开源自助建站系统免费下载链接?
建站主机与服务器功能差异如何区分?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何挑选最适合建站的高性能VPS主机?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何设计高效校园网站?
建站主机如何安装配置?新手必看操作指南
制作宣传网站的软件,小红书可以宣传网站吗?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
公众号网站制作网页,微信公众号怎么制作?
如何快速上传自定义模板至建站之星?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
个人网站制作流程图片大全,个人网站如何注销?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
教程网站设计制作软件,怎么创建自己的一个网站?
黑客如何通过漏洞一步步攻陷网站服务器?
Python lxml的etree和ElementTree有什么区别
网站图片在线制作软件,怎么在图片上做链接?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
如何获取PHP WAP自助建站系统源码?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
建站主机默认首页配置指南:核心功能与访问路径优化
头像制作网站在线制作软件,dw网页背景图像怎么设置?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
*请认真填写需求信息,我们会在24小时内与您取得联系。