darcs patch: Teach the inliner about primitive compar... (and
simonpj at microsoft.com
Tue Oct 17 04:13:58 EDT 2006
Thanks for doing this. Running nofib is a great sanity check. I've
spent a lot of time thinking "why does my cool improvement make some of
these nofib programs get worse". It's surprisingly hard to make
optimisations that always win! (Of course, some losses may be
acceptable, if they aren't big, and trade for good wins elsewhere.)
Adding more nofib programs is also a good thing to do. Maybe your
shifting program would make a good "imaginary" or "spectral" one.
(You'll see there are three subdirectories for different classes of
We'll look again at those profiling bugs -- but meanwhile there's a
difficulty lurking: profiling will change what the optimiser does, which
may conceal exactly what you are looking for. Instead we usually use
valgrind to profile execuction at a lower level http://valgrind.org.
Something like this
valgrind --tool=cachegrind <prog> <args>
[ creates a file like cachegrind.out.23915]
[ use the correct number, of course ]
Alexey Rodriguez is working on low-level perf measurement at the moment,
so I'm ccing him.
PS: I pushed your nofib-analyse patches, thank you
| -----Original Message-----
| From: Samuel Bronson [mailto:naesten at gmail.com]
| Sent: 14 October 2006 19:34
| To: Simon Peyton-Jones
| Cc: cvs-ghc at haskell.org; roconnor at theorem.ca
| Subject: Re: darcs patch: Teach the inliner about primitive compar...
| On 10/13/06, Simon Peyton-Jones <simonpj at microsoft.com> wrote:
| > Our mechanism for figuring this out is to
| > - check out the nofib suite (darcs.haskell.org/nofib)
| > - run the suite before and after the patch (cd nofib; make
| > clean; make -k >& log)
| > - run the nofib-analyse script to compare the two logs
| > The third step produces a table showing whether runtimes and
| > went down or up.
| > Could you do this and let us know how it goes?
| Okay... after unpulling your GADT patch... and getting stage2 to build
| (it had a type error in GHCI-only type family-related code)... and
| faking dos2unix... and getting nofib-analyse to at least *build* with
| GHC 6.4 (but it won't build with 6.6 because Data.FiniteMap is
| missing!)... and getting the numbers not to be so long and run
| together... I've got some results.
| Now, a lot of the programs didn't run correctly (I think they were all
| already broken, though), most of them were 1% larger, and a few
| allocated and/or performed significantly worse... I think... but I'm
| not too good at interpreting the results. Check the moderation queue
| for patches to nofib-analyse, in case I messed it up. If you want the
| logs, I'll be happy to send them to you, but I'd rather not hit the
| list message size limit on this one ;-).
More information about the Cvs-ghc