按函数名称进行基准测试
Go benchmark by function name
我有这个基准函数:
BenchmarkMyTest(b *testing.B) {
}
而且我想 运行 只有这个功能而不是 运行 宁所有其他测试,但命令对我不起作用。
go test -bench='BenchmarkMyTest'
or
go test -run='BenchmarkMyTest'
运行在 Go 中使用一个基准函数的正确方法是什么?
它说要使用正则表达式,但我找不到任何文档。
谢谢,
描述于Command Go: Description of testing flags:
-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.
所以语法是你必须用 space 或等号(没有撇号)分隔它,你指定的是正则表达式:
go test -bench BenchmarkMyTest
go test -run TestMyTest
或者:
go test -bench=BenchmarkMyTest
go test -run=TestMyTest
恰好指定 1 个函数
由于指定的表达式是一个正则表达式,这也将匹配名称包含指定名称的函数(例如,名称以此开头的另一个函数,例如 "BenchmarkMyTestB"
)。如果只想匹配 "BenchmarkMyTest"
,请附加正则表达式单词边界 '\b'
:
go test -bench BenchmarkMyTest\b
go test -run TestMyTest\b
请注意,仅将其附加到末尾就足够了,就好像函数名称不以 "Benchmark"
开头一样,它不被认为是基准函数,如果它不以类似的方式开始与"Test"
,它不被认为是一个测试函数(并且不会被拾取)。
我发现那些答案不完整,所以这里有更多的主题...
以下命令运行所有以 BenchmarkMyTest
开头的基准测试(BenchmarkMyTest1、BenchmarkMyTest2 等...)并跳过所有以 -run=^$ .
开头的测试
您还可以使用 -benchtime 5s
指定测试持续时间,或者您可以使用 -benchmem
强制 b.ReportAllocs()
以获得如下值:
BenchmarkLogsWithBytesBufferPool-48 46416456 26.91 ns/op 0 B/op 0 allocs/op
最后的命令是:
go test -bench=^BenchmarkMyTest . -run=^$ . -v -benchtime 5s -benchmem
我有这个基准函数:
BenchmarkMyTest(b *testing.B) {
}
而且我想 运行 只有这个功能而不是 运行 宁所有其他测试,但命令对我不起作用。
go test -bench='BenchmarkMyTest'
or
go test -run='BenchmarkMyTest'
运行在 Go 中使用一个基准函数的正确方法是什么? 它说要使用正则表达式,但我找不到任何文档。
谢谢,
描述于Command Go: Description of testing flags:
-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.
所以语法是你必须用 space 或等号(没有撇号)分隔它,你指定的是正则表达式:
go test -bench BenchmarkMyTest
go test -run TestMyTest
或者:
go test -bench=BenchmarkMyTest
go test -run=TestMyTest
恰好指定 1 个函数
由于指定的表达式是一个正则表达式,这也将匹配名称包含指定名称的函数(例如,名称以此开头的另一个函数,例如 "BenchmarkMyTestB"
)。如果只想匹配 "BenchmarkMyTest"
,请附加正则表达式单词边界 '\b'
:
go test -bench BenchmarkMyTest\b
go test -run TestMyTest\b
请注意,仅将其附加到末尾就足够了,就好像函数名称不以 "Benchmark"
开头一样,它不被认为是基准函数,如果它不以类似的方式开始与"Test"
,它不被认为是一个测试函数(并且不会被拾取)。
我发现那些答案不完整,所以这里有更多的主题...
以下命令运行所有以 BenchmarkMyTest
开头的基准测试(BenchmarkMyTest1、BenchmarkMyTest2 等...)并跳过所有以 -run=^$ .
您还可以使用 -benchtime 5s
指定测试持续时间,或者您可以使用 -benchmem
强制 b.ReportAllocs()
以获得如下值:
BenchmarkLogsWithBytesBufferPool-48 46416456 26.91 ns/op 0 B/op 0 allocs/op
最后的命令是:
go test -bench=^BenchmarkMyTest . -run=^$ . -v -benchtime 5s -benchmem