1. Benchmark,是GO语言用来做函数的效能测试。
2. Go语言对效能测试函数的名称与函数的参数有什么规定?
a. 对于效能测试函数,其名称必须以Benchmark为开头,并且参数只有一个 *testing.B类型的参数。
b. 档案名称必须要以"_test"为结尾。
c. 函数格式範例:
func BenchmarkXXX(b *testing.B) { //与性能测试无关的code b.ResetTimer() for i := 0; i < b.N; i++ { //测试的code } b.StopTimer() //与性能测试无关的code}
3. 如何解释效能测试的测试结果?
程式码範例:(需要可以运行go test -bench)
package mainimport ( "testing")func Add(x, y int) int { return x + y}func BenchmarkAdd(b *testing.B) { b.ResetTimer()for i := 0; i < b.N; i++ { Add(3, 5) } b.StopTimer()}
windows和amd64,是作业系统、位元数。
BenchmarkAdd-8 => CPU的核心数。
1000000000 => 执行次数。
0.302 ns/op => 执行一次花费的时间。
4. 效能测试函数中的计时器,做什么用?
StartTimer、StopTimer、ResetTimer是专属于效能测试的计时器。
分别的意思是,开始纪录、停止纪录、重新纪录执行时间。
使用这几个函数,可以避免for迴圈之外的程式码干扰到效能测试的计算。
5. 简易使用指令
go test -bench=. //运行资料夹下全部的benchmark
go test -bench=. -benchmem