[Haskell-cafe] Announce: ghc-core,
command line pager for reading GHC Core
dons at galois.com
Fri May 23 12:31:53 EDT 2008
> On Fri, 23 May 2008, Henning Thielemann wrote:
> >An even more advanced tool could show differences between two Core
> >listings. Say I have a program which runs too slow. But if I change a
> >small detail it runs significantly faster - I want to know, how did my
> >change in the Haskell file modified the Core and why the speedup.
> >Showing differences between Core files will certainly be complicated
> >because the generated identifiers are completely different. I don't know
> >whether the order of declarations is a problem.
> >I have an example here where a program becomes faster by a factor of 10
> >with a rather small change. First I thought the slow thing must be the
> >higher order function which occurs in the Core and is not inlined, but it
> >is present in the slow and the fast variant of the program.
> In this special example, actually simple 'diff' spotted the critical
> difference, namely a polymorphic function was called. Now I'm in a
> dilemma: I can either INLINE the function, then it's whole body is copied
> into main program, which is not necessary here. However this solution
> would guarantee speed in every case. Or I can SPECIALISE the function,
> then the function will only be called, but with polymorphism overhead
> eliminated. This would only work for a restricted range of types. I'd like
> to have a pragma, that tells GHC to specialise a function for every type
> it is called with.
I usually go with inlining, and get GHC as a whole program optimising compiler.
More information about the Haskell-Cafe