go 学习随记:基准测试

go 学习随记:基准测试

简单记录一下工具使用和介绍

简介

通过testing包来写基准测试, 用于测试代码性能
一般尽量保证机器空闲且稳定

用法

前置要求

  1. 所有测试函数都应该写在_test.go为后缀的文件中
  2. 基准测试函数必须加上Benchmark前缀
    1. 后面拼接字符串必须开头大写或下划线拼接 如:BenchmarkAbc Or Benchmark_abc
  3. 使用的命令是go test -bench=(正则) {其实写的就是函数名的可匹配正则比较随意}

a.go

func abc(n int) int {
	if n <= 0 {
		return 0
	}
	return abc(n-1)
}

a_test.go
目的:求abc执行一次的耗时和使用的空间
每个基准函数被执行时都有一个不同的b.N值,这个值代表基准函数应该执行的迭代次数。
b.N从1开始,如果基准函数在1秒内就执行完了,那么b.N的值会递增以便基准函数再重新执行(译者注:即基准函数默认要运行1秒,如果该函数的执行时间在1秒内就运行完了,那么就递增b.N的值,重新再执行一次)
b.N按照近似顺序增加,每次迭代大约增长20%。基准框架试图更智能,如果它看到较小的b.N值相对较快的完成了迭代,它将b.N增加的更快。
就是执行多次求一个平均值

func Benchmark_abc40(b *testing.B) {
	b.ReportAllocs()
	for n := 0; n < b.N; n++ {
		abc(40)
	}
}

命令

go test -bench=40 # 因为是正则40或abc40都可以
go test -bench=. # 执行当前目录下的所有, 也可以写目录地址

你可能感兴趣的:(golang,开发语言,后端)