猿问

按函数名称进行基准测试

我有这个基准功能:


BenchmarkMyTest(b *testing.B) {

}

而且我只想运行此功能而不运行所有其他测试,但该命令对我不起作用。


go test -bench='BenchmarkMyTest'

or

go test -run='BenchmarkMyTest'

在 Go 中运行单个基准测试函数的正确方法是什么?它说要使用正则表达式,但我找不到任何文档。


谢谢,


汪汪一只猫
浏览 223回答 2
2回答

ITMISS

在Command Go 中描述:测试标志的描述:-bench regexp    Run benchmarks matching the regular expression.    By default, no benchmarks run. To run all benchmarks,    use '-bench .' or '-bench=.'.-run regexp    Run only those tests and examples matching the regular    expression.所以语法是你必须用空格或等号(没有撇号)分隔它,你指定的是一个正则表达式:go test -bench BenchmarkMyTestgo test -run TestMyTest或者:go test -bench=BenchmarkMyTestgo test -run=TestMyTest精确指定 1 个函数由于指定的表达式是一个正则表达式,这也将匹配名称包含指定名称的函数(例如,名称以 this 开头的另一个函数,例如"BenchmarkMyTestB")。如果您只想匹配"BenchmarkMyTest",请附加正则表达式单词边界'\b':go test -bench BenchmarkMyTest\bgo test -run TestMyTest\b请注意,仅将其附加到末尾就足够了,就好像函数名称不以 开头一样"Benchmark",它不被视为基准函数,同样,如果它不以 开头"Test",则不被视为测试函数(无论如何都不会被拾取)。

不负相思意

我发现这些答案不完整,所以这里有更多的主题......以下命令运行以BenchmarkMyTest(BenchmarkMyTest1, BenchmarkMyTest2, etc...)开头的所有基准测试,并跳过所有测试-run=^$ .您还可以指定测试持续时间,-benchtime 5s或者您可以强制b.ReportAllocs()使用-benchmem以获得如下值:BenchmarkLogsWithBytesBufferPool-48     46416456                26.91 ns/op            0 B/op          0 allocs/op最后的命令是:go test -bench=^BenchmarkMyTest . -run=^$ . -v -benchtime 5s -benchmem
随时随地看视频慕课网APP

相关分类

Go
我要回答