A tool and GitHub Action for continuous benchmarking of Go code, visualizing results, and detecting performance regressions in pull requests.
gobenchdata is a tool and GitHub Action that automates the collection, visualization, and analysis of Go benchmark results. It runs `go test -bench`, publishes the data to an interactive web app, and can be configured to check for performance regressions in pull requests, helping teams maintain code performance over time.
Go developers and teams who want to integrate performance benchmarking into their CI/CD pipeline and need to monitor for performance regressions.
It provides an all-in-one solution for continuous benchmarking in Go projects, with easy GitHub Action integration, a built-in visualization web app, and configurable checks to prevent performance regressions from being merged.
📉 Run Go benchmarks, publish results to an interactive web app, and check for performance regressions in your pull requests
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The README provides straightforward YAML examples for setting up continuous benchmarking in GitHub Actions, with minimal configuration for publishing results and running checks on pushes or PRs.
Allows defining custom checks with regular expressions and diff functions in a YAML file to fail pull requests on performance regressions, offering granular control over what constitutes a regression.
Includes a web app that can be generated and served locally or published, with customizable charts for visualizing benchmark history, as shown in the demo configuration examples.
Supports both Docker container actions for simplicity and CLI/custom setups using 'gobenchdata action' for custom Go versions, detailed in the custom setup section.
The tool is heavily designed around GitHub Actions; using it with other CI systems requires manual workarounds and lacks native support, limiting its applicability.
Setting up checks and the web app requires YAML files with regex patterns and custom diff functions, which can be error-prone and daunting for users unfamiliar with these tools.
Benchmark runs are triggered only by GitHub events like pushes, not providing continuous or on-demand monitoring outside the CI pipeline, which may miss real-time performance issues.