go test 默认不运行基准测试,需用 -bench 参数;可同时执行单元测试和基准测试,如 go test -run=TestAdd -bench=BenchmarkAdd -benchmem。
go test 同时跑单元测试和基准测试默认情况下 go test 不会执行 Benchmark* 函数,必须显式加 -bench 参数。想“一次命令兼顾两者”,得组合使用 -run 和 -bench,但要注意它们的匹配逻辑互不干扰:
-run 只控制 Test* 的执行(支持正则,如 -run=^TestAdd$)-bench 只控制 Benchmark* 的执行(也支持正则,如 -bench=^BenchmarkAdd$)go test -run=TestAdd -bench=BenchmarkAdd -benchmem
-bench=.,它会运行所有基准测试,不管 -run 是否匹配到测试函数Benchmark 中调用 testing.B 的常见误用基准测试不是把逻辑塞进 b.N 循环就完事——循环体里不能含初始化、I/O、随机数等干扰项,否则结果失真。典型错误包括:
for i := 0; i 内部调用 rand.Intn() 或 time.Now()
b.ReportAllocs() 就断言内存表现b.StopTimer() / b.StartTimer() 位置不对,漏掉关键路径计时正确做法是把预热、准备、清理拆开:
func BenchmarkParseJSON(b *testing.B) {
data := []byte(`{"name":"foo","age":42}`)
var v map[string]interface{}
b.ResetTimer() // 确保只测核心解析
for i := 0; i < b.N; i++ {
json.Unmarshal(data, &v)
}
}
避免重复实现,建议把被测逻辑封装成导出函数或闭包,单元测试和基准测试都调用它。不要在 Test* 里复制 Benchmark* 的循环逻辑。
CalculateSum(nums []int) int
TestCalculateSum(t *testing.T) 调用它并比对结果BenchmarkCalculateSum(b *testing.B) 在循环中调用它b.ReportMetric() 显式标注单位,例如 b.ReportMetric(float64(costMs), "ms/op")
go test -bench=. -benchmem 结果里 B/op 有时为 0B/op 表示每次操作平均分配的字节数,为 0 通常意味着:编译器做了逃逸分析优化,把本该堆分配的对象转为栈分配;或者你压根没触发内存分配(比如纯计算、复用已有变量)。
make([]int, 0, N) 预分配容量,避免扩容导致额外分配[]byte 或反之(string(b) / []byte(s) 都分配)go build -gcflags="-m" your_file.go 查看逃逸分析输出-benchmem 必须和 -bench 一起用才生效,单独用无效真正难的是让性能测试反映真实负载——比如加锁逻辑在单 goroutine 下快如闪电,一上多协程就暴露竞争,这种场景得靠 runtime.GOMAXPROCS 和手动启多个 goroutine 模拟,而不是只依赖默
认的单线程 b.N 循环。
# js
# json
# go
# golang
# 字节
# 栈
# 性能测试
# cos
# 为什么
# String
# for
# 封装
# 字符串
# 结构体
# int
# 循环
# 堆
# 线程
# 闭包
# channel
# 对象
# 单元测试
# 加锁
# 复用
# 的是
# 随机数
# 多个
# 已有
# 用了
# 它会
相关文章:
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
javascript中对象的定义、使用以及对象和原型链操作小结
建站主机无法访问?如何排查域名与服务器问题
如何在阿里云购买域名并搭建网站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
网站微信制作软件,如何制作微信链接?
如何快速搭建支持数据库操作的智能建站平台?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何快速生成高效建站系统源代码?
营销式网站制作方案,销售哪个网站招聘效果最好?
如何基于云服务器快速搭建个人网站?
详解jQuery中基本的动画方法
安徽网站建设与外贸建站服务专业定制方案
浅析上传头像示例及其注意事项
名字制作网站免费,所有小说网站的名字?
如何通过网站建站时间优化SEO与用户体验?
网站设计制作企业有哪些,抖音官网主页怎么设置?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
网站按钮制作软件,如何实现网页中按钮的自动点击?
家庭建站与云服务器建站,如何选择更优?
网站制作话术技巧,网站推广做的好怎么话术?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
如何用AWS免费套餐快速搭建高效网站?
如何高效配置IIS服务器搭建网站?
制作旅游网站html,怎样注册旅游网站?
如何用花生壳三步快速搭建专属网站?
如何在腾讯云免费申请建站?
如何选择域名并搭建高效网站?
建站主机服务器选购指南:轻量应用与VPS配置解析
建站主机核心功能解析:服务器选择与网站搭建流程指南
建站之星logo尺寸如何设置最合适?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何通过cPanel快速搭建网站?
音乐网站服务器如何优化API响应速度?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
如何在IIS中新建站点并解决端口绑定冲突?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
宝塔建站无法访问?如何排查配置与端口问题?
已有域名和空间,如何快速搭建网站?
如何用好域名打造高点击率的自主建站?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
*请认真填写需求信息,我们会在24小时内与您取得联系。