tasty-bench has fewer dependencies and is agile to keep up with new GHC
versions. This change is especially motivated by support for GHC 9.0.1.
gauge depends on foundation/basement which lagging much behind and seem
to be unmaintained.
We can always use the chart executable built by any compiler version.
Sometimes the chart executable is not buildable by newer compiler
versions, in that case we can build it using another compiler and use
that.
With all the extensions used in streamly, optimization options and
ddump-simpl options.
This is useful for compiling standalone files, when inspecting core for
perf issues. I wish cabal could invoke ghc with environment from the
cabal file. Can it?
RUNNING_BENCHMARKS/RUNNING_TESTS variables were getting cleared up by
set_common_vars. Also, all_grp is a function and should be treated
differently than variables.
This allows us to build and run individual tests or groups of tests. The
script is supposed to be extended to run hpc/coverage manually after
running the tests.
Note: cabal fails to run coverage if the test module is separated from
the library.
This module took a lot of time and 4GB RAM to compile. Its now broken
into smaller module that can be compiled in less than 512 MB RAM.
The memory limits are set based on a 3-pass fusion-plugin.
This commit results in worse performance because now we are double
buffering once in ParserD and once in ParserK. This can potentially be
fixed but would require bigger changes to unify the backtracking buffer
management for ParserD and ParserK.
In the quick mode we anyway use --include-first-iter, we should not be running
many iterations, one iteration is enough, anyway allocations do not change
across iterations. We can use this for super quick comparison of benchmarks.
Some of the benchmarks were order of magnitude off due to missing INLINE for
type class operations. Now, all of them are in reasonable limits. Benchmarks
affected for serial streams:
* Functor, Applicative, Monad, transformers
We need to do a similar exercise for other types of streams and for
folds/parsers as well.