运行 Go 基准测试的正确输出
Correct output of running Go benchmarks
当我运行这个repository的基准(只是任何go项目的占位符)使用:
go test -run="^$" -bench="^BenchmarkLessorRevoke1000$" ./...
我得到的输出是 this,基准测试结果显示:
BenchmarkLessorRevoke1000-8 1033351 1141 ns/op
还有一大堆其他的测试输出。我如何让它只显示基准而不显示测试输出?
您可以为 go test
工具的 -run
参数提供一个虚拟名称,如果您没有任何与该名称匹配的测试,那么只有基准测试应该得到 运行.
你用 "^$"
涵盖了这个所以很好,你也有一个模式来匹配 "^BenchmarkLessorRevoke1000$"
的基准。
问题是您正在 运行 对具有 ./...
.
的整个包 and/or 子目录进行测试
您应该在每个包的基础上指定您想要 运行 的基准。
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.
Running benchmarks for multiple packages will execute them concurrently, skewing your results.
当我运行这个repository的基准(只是任何go项目的占位符)使用:
go test -run="^$" -bench="^BenchmarkLessorRevoke1000$" ./...
我得到的输出是 this,基准测试结果显示:
BenchmarkLessorRevoke1000-8 1033351 1141 ns/op
还有一大堆其他的测试输出。我如何让它只显示基准而不显示测试输出?
您可以为 go test
工具的 -run
参数提供一个虚拟名称,如果您没有任何与该名称匹配的测试,那么只有基准测试应该得到 运行.
你用 "^$"
涵盖了这个所以很好,你也有一个模式来匹配 "^BenchmarkLessorRevoke1000$"
的基准。
问题是您正在 运行 对具有 ./...
.
您应该在每个包的基础上指定您想要 运行 的基准。
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.
Running benchmarks for multiple packages will execute them concurrently, skewing your results.