-
Notifications
You must be signed in to change notification settings - Fork 126
Add benchcomp #2274
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add benchcomp #2274
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you. This looks very clean and organized. I like how you added a bunch of README.md
everywhere. This is something that we should be doing more often!
f4770bf
to
02fc6b2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great @karkhaz! I have a few comments, mostly minor.
This commit adds a new tool called `benchcomp` to kani. `benchcomp` is a tool for comparing one or more suites of benchmarks using two or more 'variants' (command line arguments and environment variables). `benchcomp` runs all combinations of suite x variant, parsing the unique output formats of each of these runs. `benchcomp` then combines the parsed outputs and writes them into a single file. `benchcomp` can post-process that combined file to create visualizations, exit if the results are not as expected, or perform other actions. All subcommands of `benchcomp` are noops in this commit; future commits will fill in the implementation.
This commit adds a single unit test that validates a simple config file against a schema. The script that runs the tests is currently quite minimal, but will be expanded to support regression tests in a future commit.
`benchmark run` is a command that runs every combination of suite x variant, and writes their results out to files in a single directory. `benchcomp collate` reads all the files from that directory and writes out a single combined file that can be further post-processed. This commit also adds a regression test, together with regression test infrastructure. The commit also adds a trivial 'parser' for the test.
70aa2d0
to
394dc86
Compare
Description of changes:
This PR adds benchcomp, a tool for comparing one or more suites of benchmarks using two or more 'variants' (command line arguments and environment variables).
benchcomp
runs all combinations of suite x variant, parsing the unique output formats of each of these runs.benchcomp
then combines the parsed outputs and writes them into a single file.benchcomp
can post-process that combined file to create visualizations, exit if the results are not as expected, or perform other actions.Testing:
This PR currently has a single unit test that validates a configuration file, and a single regression test that runs
benchcomp run
andbenchcomp collate
together. The tests are currently minimal because this PR does not include a realistic parser for benchmark output. The included trivial parser is enough to exercise the two currentbenchcomp
subcommands, but more substantial tests will be added when a real parser gets included.Checklist
This PR fixes #2273.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.