Go语言自带了一个强大的测试框架,其中包括基准测试(Benchmark)功能,基准测试用于测量和评估一段代码的性能。
我们可以通过在Go的测试文件中编写特殊格式的函数来创建基准测试。测试文件的命名遵守原函数名称_test.go 的格式。
基准测试函数的名字必须以"Benchmark"开头,后面跟着的是想要命名的测试名字,函数的唯一参数是一个指向*testing.B的指针。例如:
func BenchmarkMyFunction(b *testing.B) { for i := 0; i < b.N; i++ { // 执行你想要测试性能的代码 } }
在基准测试函数中,将想要测试的代码放在一个针对b.N的循环中。b.N是一个非常大的数,Go测试框架会自动调整它的值,以使得基准测试函数运行的时间足够长,从而得到更准确的结果。
通过在命令行中运行go test -bench=.来执行基准测试。-bench标志后面跟着的是一个正则表达式,匹配你想要运行的基准测试函数的名字,. 表示匹配所有文件。
go test -bench=.
基准测试结果会显示每次操作的平均时间,可以通过这个结果来评估你的代码的性能,或者对比不同版本或不同实现的性能差异。
范例:
func BenchmarkTest(b *testing.B) { str := "" for i := 0; i < b.N; i++ { str += "a" } }
输出:
goos: darwin goarch: arm64 pkg: awesomeProject3 BenchmarkTest BenchmarkTest-12 1000000 28001 ns/op PASS
- goos: darwin:基准测试运行操作系统
- goarch: arm64:基准测试运行的处理器架构
- pkg: awesomeProject3:基准测试运行在的 Go 包
- BenchmarkTest:基准测试函数名
- BenchmarkTest-12:基准测试及其并行度。这里是在并行度为 12 的情况下运行。
- 1000000:基准测试函数运行次数
- 28001 ns/op:每次运行基准测试函数需要的时间,单位是纳秒。这里是为 28001 纳秒,即 0.028001 毫秒。
- PASS:表示基准测试通过
到此这篇关于Go基准测试Benchmark的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文地址:https://blog.csdn.net/qq_35760825/article/details/131960037