This repository was archived by the owner on Aug 19, 2023. It is now read-only.
Reorganize passes benchmarks #714
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This commit reorganizes the passes benchmarks to better measure memory
consumption and decrease the amount of time spent in setup. There are
tests for 3 passes: ConsolidateBlocks, CommutativeCancellation, and
Optimize1qGates that depended on either an analysis pass or
tranformation pass to be run before they can work or are effective. To
isolate the benchmarking of these passes those prequesite passes were
run in setup and then could be accessed by the benchmark methods for
those passes. However this had a cost, it makes the setup for every
benchmark slower because we have to run these extra passes even if the
results are not used. This has a big impact for peakmem benchmarks
though, because the peakmem includes the setup() function there are
cases where the results of peakmem could be skewed by these passes. To
fix this this commit splits benchmarks into classes that run the extra
passes to isolate the setup cost to only those benchmarks which actually
need the extra passes.
Details and comments