Go 基准测试 benchmark:ns/op、B/op 与 allocs/op 分析
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
函数 BenchmarkXxx(b *testing.B):循环 for i := 0; i < b.N; i++ 包裹被测代码;运行 go test -bench=. -benchmem,输出 ns/op(每次耗时)、B/op(每 op 分配字节)、allocs/op(分配次数)。关键:① 防止编译器优化掉结果——结果赋给包级变量(var sink = result);② 可设子基准 b.Run("name", func(b *testing.B)...) 对比多组;③ -benchtime=3s 控时长、-count=5 多次取均值;④ b.ReportAllocs() 或 -benchmem 看分配。
回复
0 条回复