summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2008-02-28 11:13:01 +0000
committersimonpj@microsoft.com <unknown>2008-02-28 11:13:01 +0000
commite618109e7d3f313ea334dd8f53803971fb99e797 (patch)
tree75fd26f6d32a21e120fb1457c4de1970c9cd6f64
parent9d6a760bfa5755a44fc9d44ec0234dc6184ae6d6 (diff)
downloadhaskell-e618109e7d3f313ea334dd8f53803971fb99e797.tar.gz
Comments only
-rw-r--r--compiler/deSugar/DsExpr.lhs13
1 files changed, 9 insertions, 4 deletions
diff --git a/compiler/deSugar/DsExpr.lhs b/compiler/deSugar/DsExpr.lhs
index 0633717d09..27077eb329 100644
--- a/compiler/deSugar/DsExpr.lhs
+++ b/compiler/deSugar/DsExpr.lhs
@@ -541,13 +541,18 @@ fruitless allocations. Essentially, whenever we see a list literal
If fusion fails to occur then build will get inlined and (since we
defined a RULE for foldr (:) []) we will get back exactly the
- normal desugaring for an explicit list! However, if it does occur
- then we can potentially save quite a bit of allocation (up to 25\%
- of the total in some nofib programs!)
+ normal desugaring for an explicit list.
+
+This optimisation can be worth a lot: up to 25% of the total
+allocation in some nofib programs. Specifically
+
+ Program Size Allocs Runtime CompTime
+ rewrite +0.0% -26.3% 0.02 -1.8%
+ ansi -0.3% -13.8% 0.00 +0.0%
+ lift +0.0% -8.7% 0.00 -2.3%
Of course, if rules aren't turned on then there is pretty much no
point doing this fancy stuff, and it may even be harmful.
-
\begin{code}
dsExplicitList :: PostTcType -> [LHsExpr Id] -> DsM CoreExpr