[Haskell-cafe] Announce: ghc-core,
command line pager for reading GHC Core
lemming at henning-thielemann.de
Fri May 23 12:31:24 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.
More information about the Haskell-Cafe