当我使用以下命令在此repository(仅是go项目的占位符)上运行基准测试时:
go test -run="^$" -bench="^BenchmarkLessorRevoke1000$" ./...
我得到的输出是this,显示基准结果:
BenchmarkLessorRevoke1000-8 1033351 1141 ns/op
而且还带有大量其他测试输出。如何使它仅显示基准而不显示测试输出?
您可以为-run
工具的go test
参数提供一个虚拟名称,并提供没有与该名称匹配的任何测试,那么仅基准测试应运行。
您用"^$"
进行了覆盖,所以很好,您也可以使用一种模式将基准与"^BenchmarkLessorRevoke1000$"
进行匹配。
问题是您正在使用./...
在整个程序包和/或子目录中运行go测试。
您应指定要在每个程序包的基础上运行的基准。
go test -run="$^ -bench="^BenchmarkLessorRevoke1000$" .
go test -run="$^ -bench="^BenchmarkLessorRevoke1000$" ./pkg1/
go test -run="$^ -bench="^BenchmarkLessorRevoke1000$" ./pkg2/
Also be mindful, if you do want to run benchmarks in mass you should do so on a per-package basis.
运行多个程序包的基准将同时执行它们,从而使结果不正确。