[commit: nofib] master: Add notes about nofib (4b19571)
Simon Peyton Jones
simonpj at microsoft.com
Wed Jan 16 18:17:32 CET 2013
Repository : ssh://darcs.haskell.org//srv/darcs/nofib
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/4b19571102acd6fbccfb13b91f1dd87ae50e1813
>---------------------------------------------------------------
commit 4b19571102acd6fbccfb13b91f1dd87ae50e1813
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Wed Jan 16 17:13:04 2013 +0000
Add notes about nofib
>---------------------------------------------------------------
Simon-nofib-notes | 35 +++++++++++++++++++++++++++++++----
1 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/Simon-nofib-notes b/Simon-nofib-notes
index d8568d2..2b4654c 100644
--- a/Simon-nofib-notes
+++ b/Simon-nofib-notes
@@ -13,6 +13,11 @@ whereas it didn't before. So allocations go up a bit.
Imaginary suite
---------------------------------------
+integrate
+~~~~~~~~~
+integrate1D is strict in its second argument 'u', but it also passes 'u' to
+function 'f'. Hence it now does some reboxing, which pushes up allocation
+slightly.
gen_regexps
~~~~~~~~~~~
@@ -215,6 +220,11 @@ Lambda
This program shows the cost of the non-eta-expanded lambdas that arise from
a state monad.
+mandel2
+~~~~~~~
+check_perim's several calls to point_colour lead to opportunities for CSE
+which may be more or less well taken.
+
Mandel
~~~~~~
Relies heavily on having a specialised version of Complex.magnitude
@@ -339,19 +349,36 @@ Sphere also does 60,000 calls to hPutStr, so I/O plays a major role. Currently
this I/O does a *lot* of allocation, much of it since the adddition of thread-safety.
-Treejoin
+treejoin
~~~~~~~~
-Does a lot of IO.readFile.
+Does a lot of IO.readFile. In GHC.IO.Encoding.UTF8 the demand
+analyser sees a strict function with type
+ a_s1gj :: GHC.IO.Buffer.Buffer GHC.Word.Word8
+ -> GHC.IO.Buffer.Buffer GHC.Types.Char
+ -> GHC.Prim.State# GHC.Prim.RealWorld
+ -> (# GHC.Prim.State# GHC.Prim.RealWorld,
+ (GHC.IO.Encoding.Types.CodingProgress,
+ GHC.IO.Buffer.Buffer GHC.Word.Word8,
+ GHC.IO.Buffer.Buffer GHC.Types.Char) #)
+Unboxing both Buffer arguments makes a HUGE difference (halves
+allocation); but that makes the worker function have 12 arguments. A
+good reason for unboxing even if the worker gets a lot of args.
+
+sorting
+~~~~~~~
+Same issue with GHC.IO.Encoding.UTF8 as treejoin
+
---------------------------------------
Real suite
---------------------------------------
-
+gg
+~~
+Same issue with GHC.IO.Encoding.UTF8 as treejoin
Maillist
~~~~~~~~
-
Uses appendFile repeatedly rather than opening the output file once,
which leads to numerous file opens/closes. Allocations will rise with
the new I/O subsystem in 5.02 because the I/O buffer will be
More information about the ghc-commits
mailing list