首页 ZZ游戏攻略 正文

Benchmark怎么用?新手也能快速上手的基准测试教程!

今天心血来潮,想搞个 benchmark 玩玩,看看我写的代码到底跑得有多快。这玩意儿平时不怎么用,但关键时候还是挺有用的,能帮你找到代码的瓶颈,然后对症下药,提升性能。

准备工作

我得搭个环境。我用的是 Go 语言,所以先创建一个 Go 的项目。

我先创建一个文件夹,然后在里面初始化一下:

  • 打开终端,输入 mkdir benchmark_test
  • 然后 cd benchmark_test 进入到这个文件夹
  • 接着 go mod init benchmark_test 初始化项目

这样,一个基本的 Go 项目就搭好。我新建一个文件,叫 ,准备在这个文件里写点代码测试一下。

写点代码

在 文件里,我写一个简单的斐波那契数列的函数,就是那种兔子生兔子的算法,用来测试性能挺常见的。


package main

func fib(n int) int {

if n <= 1 {

return n

return fib(n-1) + fib(n-2)

开始测试

代码写好,接下来就是重头戏,开始 benchmark 测试。Go 语言自带 benchmark 的工具,用起来挺方便的。

我创建另一个文件fib_*,专门用来写测试代码:


package main

import "testing"

func BenchmarkFib10(b testing.B) {

for i := 0; i < b.N; i++ {

fib(10)

这里,我定义一个叫 BenchmarkFib10 的函数,这个函数名必须以 Benchmark 开头,后面跟着你要测试的函数名。b testing.B 这个参数是 Go 语言 benchmark 的核心,它提供一些方法来控制测试的运行。

b.N 是一个神奇的数字,Go 语言会自动调整这个数字,让你的测试函数运行足够长的时间,以便得到一个准确的结果。在循环里,我调用 fib(10),也就是计算第 10 个斐波那契数。

运行测试

准备就绪,可以运行测试。在终端里,我输入 go test -bench=. 这个命令。

  • go test: 告诉 Go 运行测试。
  • -bench=.: 表示运行所有的 benchmark 测试。

按下回车,测试就开始跑起来。屏幕上会输出一堆信息,告诉你测试跑多少次,每次花多少时间等等。等测试跑完,我就能看到 fib(10) 这个函数到底跑得有多快。

分析结果

测试结果出来,我会仔细看看这些数字。主要关注的是每次操作的平均时间,这个数字越小,说明你的代码跑得越快。benchmark 只是一个参考,实际情况可能还会受到其他因素的影响,比如电脑的配置、运行时的负载等等。但不管怎么说,benchmark 都是一个非常有用的工具,能帮你更好地解你的代码。

这回折腾 benchmark,感觉还是挺有收获的。以后遇到性能问题,我就知道该怎么去定位和优化,真是美滋滋!