在自动化测试中,大多数框架只支持功能测试和基准测试中的一种。但是 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=.是标志需要运行默认的基准测试。您可以在测试时操作不同的标志。
输出: