
Sterling Clover wrote: ...
Finally, there's fasta.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=fasta&lang=ghc&id=2
This one really depresses me. It outperforms the previous version by roughly 20% on my machine (PPC) but underperforms by roughly the same amount on the shootout box. ...
Well done. Great, I'll have a play with your new version of Fasta, I've just upgraded to an Intel Core 2 Duo 2.33GHz. Something I found with Dons version on my machine was that if I removed all the exclamation marks and the -fbang-patterns bit at the top it went about 20% faster as well as being much cleaner code, but with my very rudimentary understanding of Haskell I wasn't entirely sure it would produce the same results if I did this and didn't get round to checking. I suspect the majority of Fasta time is spent in the rand routine. My wild cunning plan for this was that it might be possible to avoid doing the conversion to a float every time the routine is called. My thinking is that it could just return an Int most of the time because the number is only used in, I think, a less-than comparison outside rand which could almost always be decided by an Int less-than comparison rather than a float less-than comparison. A clever lazy less-than mechanism could get rand to give a float when the Int comparison is too close to be certain. Probably be classified by the shootout as cheating though. And it's way beyond what I could currently write in Haskell. Richard.