go-基准测试

07-14 1450阅读

基准测试

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

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]