How to test only one benchmark function?

hardPass picture hardPass · Apr 23, 2013 · Viewed 20.2k times · Source

In my Go package there are several benchmark files like map1_benchmark_test.go and map2_benchmark_test.go. In every *_benchmark_test.go file, there is more than one benchmark function like func BenchmarkMapTravel(b *testing.B) and func BenchmarkMapGet(b *testing.B).

Question is, how can I test just one benchmark function?

I attempted to read some manuals, and got nothing about benchmark by running go help test.

Answer

peterSO picture peterSO · Apr 23, 2013

Description of testing flags

-test.bench pattern
    Run benchmarks matching the regular expression.
    By default, no benchmarks run.

-test.run pattern
    Run only those tests and examples matching the regular
    expression.

For convenience, each of these -test.X flags of the test binary is also available as the flag -X in 'go test' itself.

For help,

$ go help testflag

For example,

go test -test.bench MapTravel
go test -test.bench MapGet

or

go test -bench MapTravel
go test -bench MapGet

To bypass test functions, include a -test.run pattern that filters out every single test. For example,

go test -test.bench MapTravel -test.run=thisexpressionwontmatchanytest

or

go test -bench MapTravel -run=^$