go test - 基准测试

稳定的测试环境

性能测试受环境影响很大,为保证测试的可重复性,尽可能地保持测试环境的稳定

  • 机器处于闲置状态,测试时不要执行其他任务,也不要和其他人共享硬件资源
  • 机器是否关闭了节能模式,一般笔记本会默认打开这个模式,测试时关闭
  • 避免使用虚拟机和云主机进行测试,虚拟机和云主机 CPU 和内存一般会超分配,性能表现会非常地不稳定

规则

  • 测试函数需要位于 *_test 文件中
  • 函数名称必须以 Benchmark 开头
  • 函数必须接受 *testing.B 作为唯一形参
  • 测试函数必须包含一个 for 循环(以 b.N 为其上限)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// fib.go
package main

func Fib(n int) int {

	if n == 0 || n == 1 {
		return n
	}
	return Fib(n-2) + Fib(n-1)
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// fib_test.go
package main

import "testing"

func BenchmarkFib(b *testing.B) {
	for n := 0; n < b.N; n++ {
		Fib(30) // run fib(30) b.N times
	}
}

go test -cover

ref

The Cover Story

series: