Major microbenchmark revamp
In microbenchmarks of short-running code like surface intersection, the overhead of the benchmark harness (e.g. random number generation) can easily exceed that of the code under study, and it's hard to reach confidence that the compiler hasn't optimized anything out.
In an attempt to defeat these problems, this MR proposes super-low-overhead primitives for defeating compiler optimizations in microbenchmarks.
Some tests are provided, which also serve as an example-based introduction to what the newly introduced primitives can and can't do.
Finally, existing microbenchmarks are also ported to the new primitives, fixing some of their flaws along the way.
Merge request reports
Activity
added 2 commits
added 1 commit
- 56e2db74 - Add microbenchmarking tools to the test suite
added 1 commit
- af409270 - Rewrite assumeWritten example in a vectorization-friendly way
added 1 commit
- 9e8a49fd - Possible workaround for the issue of debug builds
added 1 commit
- 7f56bac8 - Adjust test tolerance to accomodate worst LLVM constprop
added 1 commit
- 0876e227 - Revamp SolenoidFieldBenchmark using proposed tooling
added 1 commit
- 67e88a6b - Revamp stepper benchmarks using proposed tooling
added Improvement Minor New Feature labels
- Resolved by Hadrien Benjamin Grasland
- Resolved by Paul Gessinger
added 2 commits
mentioned in merge request !734 (merged)