https://github.com/willabides/benchdiff-action
https://github.com/willabides/benchdiff-action
benchmark benchstat go golang
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/willabides/benchdiff-action
- Owner: WillAbides
- License: mit
- Created: 2020-12-30T23:25:30.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-11-22T21:19:10.000Z (over 2 years ago)
- Last Synced: 2025-04-15T06:49:30.310Z (about 1 year ago)
- Topics: benchmark, benchstat, go, golang
- Language: Shell
- Homepage:
- Size: 44.9 KB
- Stars: 9
- Watchers: 2
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# benchdiff
Runs go benchmarks on HEAD and a base branch and reports the resulting benchstat output.
[See an example result here](https://github.com/WillAbides/benchdiff-action/runs/1691721812).
To learn about the benchdiff command that this action runs, visit https://github.com/WillAbides/benchdiff.
## Inputs
### benchdiff_args
Arguments for the benchdiff command line. This action will run the command line `benchdiff `
after making some adjustments to the arguments (listed below).
If `--base-ref` isn't present in the arguments, then `--base-ref ` will be added.
`--json` is always added because the action requires json formatted output.
`--benchstat-output=markdown` is added when no other benchstat-output value is set because the reports look best
with markdown formatting.
Consider this example:
```
--cpu=1,2 --warmup-count=1 --warmup-time=10ms --tolerance=50 --debug
```
`--cpu=1,2` is important on actions because runners have only two cores available to them.
`--warmup-count=1` and `warmup-time=10ms` cause benchdiff to do a quick warmup before starting the benchmarks.
This is important on actions because the runners appear to have a small amount of cpu burst available. If you burn
through that in the warmup, then it makes for a better cmoparison between the real runs.
`--tolerance=50` means that a benchmark isn't considered degraded unless it's delta is greater than +50%. Action
runners can have inconsistent performance within the same run. This helps mitigate a lot of false alarms.
`--debug` causes benchdiff to output raw results to stderr (among other debug data). I like having this on just
to see progress in the logs.
See https://github.com/willabides/benchdiff for all available flags.
### benchdiff_version
default: `0.5.6`
Version of the benchdiff command to use.
When a new version of this action is released, the default value will be updated to the latest version of
benchdiff that isn't a breaking change from the previous default.
### report_status
default: `true`
Whether to report the status. Any value other than "true" is interpreted as false.
I call this "status" because that's a better known term. What is actually created is a check-run.
### status_name
default: `benchdiff`
Name to use in reporting status. This is the name of the check-run that is created.
### status_sha
Report status to this sha. Default is the head of your benchdiff run.
### status_on_degraded
default: `failure`
Status to report for degraded results.
Options are "success", "failure" and "neutral"
### github_token
default: `${{ github.token }}`
Authentication token to use for reporting status.
If you use a non-default token it needs to be a token for a GitHub App installation with permission to create a
check-run.
## Outputs
### benchstat_output
Stdout from the benchdiff command.
### bench_command
Command used to run benchmarks. This is derived from the `benchdiff_args` input.
### degraded_result
Whether any of the benchmarks degraded between base and head.
### head_sha
The git revision benchstat used as head.
### base_sha
The git revision benchstat used as base.