[Haskell-cafe] Progress on shootout entries
Cale Gibbard
cgibbard at gmail.com
Tue Jan 3 18:19:28 EST 2006
On 03/01/06, Sebastian Sylvan <sebastian.sylvan at gmail.com> wrote:
> On 1/3/06, Sebastian Sylvan <sebastian.sylvan at gmail.com> wrote:
> > On 1/3/06, Chris Kuklewicz <haskell at list.mightyreason.com> wrote:
> > > Hello,
> > >
> > > Where there were no entries to the
> > > http://shootout.alioth.debian.org/benchmark.php?test=chameneos&lang=all
> > > benchmark, there are now two. The one by Josh Goldfoot is already
> > > posted, the one Einar Karttunen and I optimized has been submitted and
> > > will run faster/smaller. Our code is at
> > > http://haskell.org/hawiki/ChameneosEntry
> > >
> > > Now for improving the fasta benchmark,
> > > http://shootout.alioth.debian.org/benchmark.php?test=fasta&lang=all ,
> > > which currently has a space leak in the Haskell entry.
> > >
> > > A non-leaking version which has been optimized to run 3.5 times faster
> > > is now up at http://haskell.org/hawiki/FastaEntra (ooops..my spelling
> > > mistake).
> > >
> > > It could still be made to run about 3 times faster, if the other
> > > languages are any guide. Anyone want to help polish this one?
> > >
> > > Also, two other existing entries have space leaks, as can be seen at
> > > http://shootout.alioth.debian.org/benchmark.php?test=all&lang=ghc&lang2=ghc
> > >
> > > And finially, the haskel entry for
> > > http://shootout.alioth.debian.org/benchmark.php?test=fannkuch&lang=all
> > > is currently the *slowest* entry out of 28 languages. It is 813x
> > > slower than the c-code, 500x slower than OCaml. Should be easy to make
> > > it faster...
> >
> > While the implementation is far from "nice" it still finishes with N=9
> > (which, AFAICT, is what the benchmark is run with) in a fraction of a
> > second on my machine (and not anywhere near 51s as in the
> > benchmark)... I have a 2.6 Ghz P4...
> >
> > I was going to rewrite it using mutable STArrays for a pure version
> > that's still fast but i sorta feel like I lost the motivation now that
> > it turns out the existing implementation, though ugly, performs
> > somewhat okay...
>
> Hmm.. This may be due to laziness. Since it's only supposed to print
> out the first 30 lines it won't compute the full n! values...
>
>
> /S
You might not have been waiting for the final result. The first 30
perms print quickly, but it takes longer to get the solution to the
problem.
I managed to do better with the following program which gets the
following time report on my machine
real 0m8.175s
user 0m7.742s
sys 0m0.186s
as opposed to
real 0m23.232s
user 0m21.115s
sys 0m0.077s
for the shootout code.
I didn't try too hard to optimise it heavily, but it does use a
tree-based permutation generator I stole from some code which was in
an n-queens solution I had laying around (pretty sure it's not mine),
and an obvious memoisation hack when handling the flips.
- Cale
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Fannkuch.hs
Type: text/x-haskell
Size: 1679 bytes
Desc: not available
Url : http://www.haskell.org//pipermail/haskell-cafe/attachments/20060103/cb8d8337/Fannkuch.bin
More information about the Haskell-Cafe
mailing list