diff options
author | Edward Z. Yang <ezyang@mit.edu> | 2012-09-17 18:28:49 +0200 |
---|---|---|
committer | Edward Z. Yang <ezyang@mit.edu> | 2012-09-26 13:46:57 -0700 |
commit | d3128bfc286002862e916296629a22f1ce987e4e (patch) | |
tree | b819a5ba9bb6079775186726a603e96cbf26c9fb /docs | |
parent | 2145ffc452a64bae457a38276c81b60f22ddf161 (diff) | |
download | haskell-d3128bfc286002862e916296629a22f1ce987e4e.tar.gz |
Partially fix #367 by adding HpLim checks to entry with -fno-omit-yields.
The current fix is relatively dumb as far as where to add HpLim
checks: it will always perform a check unless we know that we're
returning from a closure or we are doing a non let-no-escape case
analysis. The performance impact on the nofib suite looks like this:
Min +5.7% -0.0% -6.5% -6.4% -50.0%
Max +6.3% +5.8% +5.0% +5.5% +0.8%
Geometric Mean +6.2% +0.1% +0.5% +0.5% -0.8%
Overall, the executable bloat is the biggest problem, so we keep the old
omit-yields optimization on by default. Remember that if you need an
interruptibility guarantee, you need to recompile all of your libraries
with -fno-omit-yields.
A better fix would involve only inserting the yields necessary to break
loops; this is left as future work.
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Diffstat (limited to 'docs')
-rw-r--r-- | docs/users_guide/using.xml | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/docs/users_guide/using.xml b/docs/users_guide/using.xml index 2c5217b40d..c3a1366f43 100644 --- a/docs/users_guide/using.xml +++ b/docs/users_guide/using.xml @@ -2332,6 +2332,24 @@ last (x : xs) = last' x xs </listitem> </varlistentry> + <varlistentry> + <term> + <option>-fomit-yields</option> + <indexterm><primary><option>-fomit-yields</option></primary></indexterm> + </term> + <listitem> + <para><emphasis>On by default.</emphasis> Tells GHC to omit + heap checks when no allocation is being performed. While this improves + binary sizes by about 5%, it also means that threads run in + tight non-allocating loops will not get preempted in a timely + fashion. If it is important to always be able to interrupt such + threads, you should turn this optimization off. Consider also + recompiling all libraries with this optimization turned off, if you + need to guarantee interruptibility. + </para> + </listitem> + </varlistentry> + </variablelist> </sect2> |