summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorEdward Z. Yang <ezyang@mit.edu>2012-09-17 18:28:49 +0200
committerEdward Z. Yang <ezyang@mit.edu>2012-09-26 13:46:57 -0700
commitd3128bfc286002862e916296629a22f1ce987e4e (patch)
treeb819a5ba9bb6079775186726a603e96cbf26c9fb /docs
parent2145ffc452a64bae457a38276c81b60f22ddf161 (diff)
downloadhaskell-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.xml18
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>