[Haskell-cafe] Using loop fusion for writing efficent high-level
code Re[2]: [Haskell] [Fwd: Re: Computer Language Shootout]
Bulat Ziganshin
bulat.ziganshin at gmail.com
Wed Feb 28 08:38:10 EST 2007
Hello Duncan,
Tuesday, February 27, 2007, 1:09:53 PM, you wrote:
can you please provide examples of such code? the ultimate goal is to
have tutorial on writing efficient code in high-level manner, but that
is too ambitious. just some examples with a little explanation of how
this is compiled?
thanks in advance
>> So I think we should do the same. It even shows in the Shootout - the
>> programs that are simultaneously fastest and clearest are not pure
>> Haskell, but delegate their innermost loops to tuned C libraries (FPS
>> and GMP).
> I should note that FPS is almost completely Haskell code, not C. We use
> C for things like memcmp, memcpy, memset, reverse_copy, intersperse,
> maximum, minimum and count.
> Certainly some of the innards are low level style Haskell, though not
> the kind that could be replicated in C because we use high level
> transformations to fuse loop bodies together and wrap them in high
> performance, low level loop code.
> This is not the style where we just wrap well tuned C code, this is a
> style where we generate high performance low level code from a high
> level spec. This relies on GHC's excellent and programmable optimiser.
> It's wrong to say that the shootout improvements were only down to
> improved libraries. The performance of ByteString code improved very
> significantly between GHC 6.4 and 6.6 and a large part of that was down
> to optimiser improvements (not just the ForeignPtr rep change).
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list