GitHub Action to transform benchmark output into a standardized format, and write to a file.
Currently supported sources:
cargo benchcriterion
name(required): name of the benchmarktool(required): tool used to get benchmark output. One of["cargo"]os(required): a string describing the osoutput-file-path(required): a path to a file containing the output of the benchmark tooldata-out-path(required): the path where the output of the action should be written
The benchmark name in the cargo benchmarks can be provided as a ,-separated string where each item represents a key-value pair with the format key=value, e.g. category=ML-KEM,keySize=44,name=PK Validation,platform=neon,api=unpacked. Additionally, one of these separators may be a /, where the left-hand side represents the keys configured for a Criterion group, and the right-hand side represents the keys for a benchmark function on that group, e.g. category=ML-KEM,keySize=44,name=PK Validation/platform=neon,api=unpacked. Aside from this separator, no other / characters should be included in the name.
Alternatively, the benchmark name can be provided as a simple string, which will then be set as the value of the name key. This will only happen if there are no key=value pairs found in the benchmark name.
The output will be written to data-out-path in a standardized JSON format:
[
{
"api": "unpacked",
"category": "ML-KEM",
"keySize": 768,
"name": "PK Validation",
"os": "ubuntu-latest",
"platform": "neon",
"range": "± 123",
"unit": "ns/iter",
"value": 12314,
},
]