The Go integration is still in early development, and only some
go test
CLI flags are supported.
See the compatibility section for more information on how to ensure your benchmarks work with CodSpeed.If you have any feedback, please reach out to us via
Discord or
email our support.go test
and the testing
package as you normally would. When running your benchmarks in CI with CodSpeed, your benchmarks will automatically be built and the reports will be sent to CodSpeed.
Creating benchmarks
You can just use thetesting
package to write benchmarks in Go. If the benchmarks are working with go test
, then they will also automatically be detected by CodSpeed without any additional configuration.
Here’s an example of a simple Fibonacci function benchmark:
fib_test.go
We recommend using b.Loop() as it's more precise and efficient
.Still, for i := 0; i < b.N; i++
is also supported for backward compatibility (before Go 1.24):For more information on how to write benchmarks in Go, check out the official
documentation.
Projects using
package main
are not currently supported for benchmarking. This is due to potential conflicts with duplicate main functions during the benchmark compilation process.Mitigation: You can rename the package to something other than main
to avoid this limitation.Testing the benchmarks locally
To run the benchmarks with CodSpeed locally, you need to install thecodspeed
runner:
go test
command with CodSpeed:
This will print all the benchmarks that can be run with CodSpeed and warnings
if some benchmarks are not supported.
Running the benchmarks in your CI
To generate performance reports, you need to run the benchmarks in your CI. This allows CodSpeed to automatically run benchmarks and warn you about regressions during development.If you want more details on how to configure the CodSpeed action, you can check
out the Continuous Reporting section.
main
branch and every
pull request:
.github/workflows/codspeed.yml
Running benchmarks in parallel CI jobs
If your benchmarks are taking too much time to run under the CodSpeed action, you can run them in parallel to speed up the execution. To parallelize your benchmarks, simply add filters to thego test
command to only run a subset of benchmarks in each job.
Compatibility
We only support the following flags forgo test
:
-bench
(required)