This is currently a work-in-progress of #15999, a follow-up on #5793 and #15357.
As this patch will change some benchmarks (i.e. `wheel-sieve1`, `awards`)
rather drastically, I wanted to get some early feedback on this, rather than
quietly investing hours of work when this patch would never have had a chance
to be accepted to begin with.
The general plan is outlined in #15999: Identify wibbly benchmarks by looking at how productivity rates change over different nursery sizes and iterate `main` of these benchmarks often enough (almost always 100 times) for the wibbles to go away.
I was paying attention that the benchmarked logic is actually run $n times more often.
When I found benchmarks with insignificant runtime (#15357), I made sure that parameters/input files were adjusted so that runtime of the different modes falls within the ranges described in https://ghc.haskell.org/trac/ghc/ticket/15357#comment:4.
This is what I did so far:
- Stabilise gen_regexp
- Stabilise primes
- Stabilise wheel-sieve1
- Stabilise wheel-sieve2
- Adjust running time of x2n1
- Adjust running time of ansi
- Adjust running time of atom
- Make awards benchmark something other than IO
- Adjust running time of banner
- Stabilise boyer
- Adjust running time of boyer2
- Adjust running time of queens