Go benchmark

Go benchmark 通过 testing 包中的 Benchmark 约定来测量代码路径的执行成本,是性能优化前建立基线的第一步。

#type / concept #status / growing #tech / dev #resource / go

[!info] related notes

Go benchmark

一句话定义

Go benchmark 是利用 testing 包中的基准测试约定来测量某段代码在重复执行下的成本表现。

核心机制 / 工作原理

Go 中 benchmark 的基本入口通常是:

func BenchmarkXxx(b *testing.B)

再通过:

go test -bench=.

来运行。

它的核心价值是:

  • 给优化前建立基线
  • 让不同实现方案可比较
  • 避免“感觉更快”的主观判断

最小例子 / 最小场景

func BenchmarkAdd(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Add(1, 2)
    }
}

这里最重要的不是循环语法,而是:

  • 把待测路径隔离出来
  • 让测量过程可重复

边界与易混淆点

  • benchmark 测到的是特定输入和特定场景,不是系统整体性能结论
  • 没有稳定基线时,过早优化容易跑偏
  • benchmark 和 profiling 常常是串联关系:先测出问题,再用 pprof 看热点
创建于 2026/6/20 更新于 2026/6/20