性能分析:benchmark基准测试
benchmark(基准测试) 可以度量某个函数或方法的性能,也就是说,如果我们知道性能的瓶颈点在哪里,benchmark 是一个超级好的方式。
// fib.go
package main
func fib(n int) int {
if n == 0 || n == 1 {
return n
}
return fib(n-2) + fib(n-1)
}
// 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 -bench .
goos: darwin
goarch: amd64
pkg: example
BenchmarkFib-8 200 5865240 ns/op
PASS
ok example 1.782s
- 与Test测试的区别
-
benchmark测试用例和普通test单元用例一致,都位于_test.go文件中 -
benchmark测试以函数名Benchmark开头, test测试以函数Test开头 -
benchmark测试入参为b *testing.B, test测试入参为t *testing.T
-
-
运行benchmark
-
go test默认不运行benchmark测试用例, 需要添加-bench才能运行benchmark测试用例。 -
-bench=可以传入正则表达式,这样匹配的用例才会执行。 -
-cpu可以改变GOMAXPROCS, 变更运行的cpu核数 -
-benchtime可指定执行时间或具体次数 -
-count可设置 benchmark 轮数 -
-benchmem可查看内存分配量和分配次数
-
-
进行性能测试时,尽可能保持测试环境的稳定
- 可以使用
b.ResetTimer()可重置定时器 - 可以使用
b.StopTimer()暂停计时 - 可以使用
b.StartTimer()开始计时
- 可以使用
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
















暂无评论内容