go-基准测试
基准测试
(图片来源网络,侵删)
Demo
// fib_test.go package main import "testing" func BenchmarkFib(b *testing.B) { for n := 0; n
- benchmark 和普通的单元测试用例一样,都位于 _test.go 文件中。
- 函数名以 Benchmark 开头,参数是 b *testing.B。和普通的单元测试用例很像,单元测试函数名以 Test 开头,参数是 t *testing.T。
执行基准测试
-
go test 命令默认不运行 benchmark 用例的,如果我们想运行 benchmark 用例,则需要加上 -bench 参数。
$ go test -bench="$Fib" . // 通过-bench指定测试函数,或者通过正则匹配一类函数,比如说`-bench='Fib$'` goos: windows goarch: amd64 pkg: gan cpu: Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz BenchmarkFib-12 306 3925085 ns/op PASS ok gan 2.218s
-
如果想使用多个cpu执行
$ go test -bench='Fib$' -cpu=2,4 .
-
如果想提高测试时间和次数
$ go test -bench='Fib$' -benchtime=50x . //执行50次 $ go test -bench='Fib$' -benchtime=5s . //执行5s $ go test -bench='Fib$' -benchtime=5s -count=3 . //执行5s,一共执行3轮
-
查看内存分配情况
$ go test -bench='Fib$' -benchmem .
去除干扰因素
-
重置计时器
func BenchmarkFib(b *testing.B) { time.Sleep(time.Second * 3) // 模拟耗时准备任务 b.ResetTimer() // 重置定时器 for n := 0; n
-
去除准备和后置处理工作耗时影响
func BenchmarkBubbleSort(b *testing.B) { for n := 0; n
参考: https://geektutu.com/post/hpg-benchmark.html
-
-
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。