2009/8/1 Ketil Malde <ke...@malde.org>: > Paul Moore <p.f.mo...@gmail.com> writes: > >> What am I doing wrong here? I'd have expected compiled Haskell to be >> faster than interpreted Python, so obviously my approach is wrong. > > Two things from my experience: Python associative arrays are fast, and > Haskell random numbers are slow. So by building a map from random > numbers, you are likely doing a fairly pessimal comparison.
Hmm, I think you're saying that for this problem, Haskell is likely to be worse than Python. Interesting. I guess I'd assumed that something CPU-intensive like this would benefit from a compiled language. Just goes to show that intuition about performance is usually wrong (something I really should know by now :-)) Is the issue with random numbers just the implementation, or is it something inherent in the non-pure nature of a random number generator that makes it hard for Haskell to implement efficiently? If the latter, that probably makes Haskell a somewhat poor choice for simulation-type programs. > Did you profile to see where the time is spent? Not until you suggested it :-) I was pleasantly surprised by how easy it was to do. The results bear out what you were saying, the bottleneck is entirely in the "dice" function. >> I'm expecting the answer to be that I've got unnecessary laziness > > IME, laziness usually affects space, but not so much time > performance. Although 'insertWith (+)' looks like it would build > unevaluated thunks for the sums. That'll teach me to bandy about technical terms as if I understand them :-) Thanks for the comments, Paul. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe