@@ -18,6 +18,8 @@ Important Note: In certain cases it is possible that GHC takes too long to
18compile with `-fspec-constr-recursive=16`, if that happens please reduce the
18compile with `-fspec-constr-recursive=16`, if that happens please reduce the
19value or remove that option.
19value or remove that option.
21+See [Explanation](#explanation) for details about these flags.
21## Using Fusion Plugin
23## Using Fusion Plugin
23In many cases `fusion-plugin` can improve performance by better stream
25In many cases `fusion-plugin` can improve performance by better stream
@@ -54,7 +56,9 @@ issue](https://gitlab.haskell.org/ghc/ghc/issues/17745) leading to
54memory leak in some cases.
56memory leak in some cases.
56* `-fspec-constr-recursive` is needed for better stream fusion by enabling
58* `-fspec-constr-recursive` is needed for better stream fusion by enabling
57−the `SpecConstr` optimization in more cases.
59+the `SpecConstr` optimization in more cases. Large values used with this flag
60+may lead to huge compilation times and code bloat, if that happens please avoid
61+it or use a lower value (e.g. 3 or 4).
59* `-fmax-worker-args` is needed for better stream fusion by enabling the
63* `-fmax-worker-args` is needed for better stream fusion by enabling the
60`SpecConstr` optimization in some important cases.
64`SpecConstr` optimization in some important cases.
@@ -62,7 +66,7 @@ the `SpecConstr` optimization in more cases.
62* `-fplugin=Fusion.Plugin` enables predictable stream fusion
66* `-fplugin=Fusion.Plugin` enables predictable stream fusion
63optimization in certain cases by helping the compiler inline internal
67optimization in certain cases by helping the compiler inline internal
64bindings and therefore enabling case-of-case optimization. In some
68bindings and therefore enabling case-of-case optimization. In some
65−cases, especially in some fileio benchmarks, it can make a difference of
69+cases, especially in some file IO benchmarks, it can make a difference of
665-10x better performance.
705-10x better performance.
68# Multi-core Parallelism
72# Multi-core Parallelism