[Haskell] [Fwd: Re: Computer Language Shootout]
Donald Bruce Stewart
dons at cse.unsw.edu.au
Tue Feb 27 07:11:46 EST 2007
duncan.coutts:
> On Sun, 2007-02-25 at 18:57 -0800, Stefan O'Rear wrote:
>
> > Haskell, now:
> > * Very much slower than C
> > * Very much easier to use than C
> > * Very easy to interface with C
> >
> > 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).
>
And just to point out that the optimiser is even better in GHC Head.
Thanks Simon!
Here's today's run on an amd64, with GHC 6.6 versus GHC head,
http://www.cse.unsw.edu.au/~dons/nobench/x86_64/results.html
For microbenchmarks, the head is 24% faster, across the whole suite 8%.
Note the bytestring-based program, sum-col, got 40% faster purely due to
improvements in the optimiser!
-- Don
More information about the Haskell
mailing list