📜  Golang 基准测试概述

📅  最后修改于: 2021-10-24 13:21:51             🧑  作者: Mango

在自动化测试中,大多数框架只支持功能测试和基准测试中的一种。但是 Golang 测试包为不同类型的测试提供了许多功能,包括基准测试。

B 是传递给 Benchmark 函数的类型(结构),用于管理基准时间并指定要运行的迭代次数。测试包的基准测试套件基本上给出了基准报告,例如消耗的时间、测试函数的迭代/请求(即函数的执行)次数

句法:

func BenchmarkXxx(*testing.B)

所有的基准测试函数都由go test命令执行。 BenchmarkResult 包含基准运行的结果。

type BenchmarkResult struct {
    N         int           // The number of iterations.
    T         time.Duration // The total time taken.
    Bytes     int64         // Bytes processed in one iteration.
    MemAllocs uint64        // The total number of memory allocations; added in Go 1.1
    MemBytes  uint64        // The total number of bytes allocated; added in Go 1.1

    // Extra records additional metrics reported by ReportMetric.
    Extra map[string]float64 // Go 1.13
}

例子:

文件:main.go

Go
package main
  
// function which return "geeks"
func ReturnGeeks() string{
    return "geeks";
}
  
// main function of package
func main() {
    ReturnGeeks()
}


Go
package main
  
import (
    "testing"
)
  
// function to Benchmark ReturnGeeks()
func BenchmarkGeeks(b *testing.B) {
    for i := 0; i < b.N; i++ {
        ReturnGeeks()
    }
}


测试文件:pkg_test.go

package main
  
import (
    "testing"
)
  
// function to Benchmark ReturnGeeks()
func BenchmarkGeeks(b *testing.B) {
    for i := 0; i < b.N; i++ {
        ReturnGeeks()
    }
}

命令:

go test -bench=.

其中-bench=.是标志需要运行默认的基准测试。您可以在测试时操作不同的标志。

输出: