Go 基准测试 benchmark:ns/op、B/op 与 allocs/op 分析
函数 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 看分配。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。