
I have added a section "Ticky-ticky quick start" to our ticky-ticky profiling page, to explain how I go about dealing with the problem you describe
https://ghc.haskell.org/trac/ghc/wiki/Debugging/TickyTicky
Simon
| -----Original Message-----
| From: David Feuer [mailto:david.feuer@gmail.com]
| Sent: 20 August 2014 09:33
| To: Simon Peyton Jones
| Subject: Re: Fusion
|
| I'll be happy to try to expand it with some examples. I'm wondering if
| you could help me figure something out: the (simple) cons/build rule
| we discussed, along with the similar cons/augment rule,
|
| "cons/build" forall (x::a) (g::forall b . (a->b->b)->b->b) . x :
| build g = build (\c n -> c x (g c n))
| "cons/augment" forall (x::a) (g::forall b . (a->b->b)->b->b)
| (xs::[a]) . x : augment g xs = augment (\c n -> c x (g c n)) xs
|
| somehow *increase* allocation substantially (11.7%) in the "event"
| NoFib test, and also significantly (3.6%) in constraints, somewhat
| (2.4%) in nucleic2 [remember this] and 1.4% in ansi. I am having a
| heck of a time trying to figure out how to track these down, and
| burning loads of time recompiling GHC over and over again. On the flip
| side of things, the wang test reduces allocation by 45.8% if I use
| these rules (both of which fire), but only when I also use -fsimple-
| list-literals for nofib/spectral/hartel/nucleic2/Main.hs.
| nucleic2 still performs a little more allocation.
|
| On Wed, Aug 20, 2014 at 2:56 AM, Simon Peyton Jones
|