
Thanks for the help. It's clear in retrospect that it was being too
lazy, but not why changing to Int64 did it. The bang patterns made
the difference between runnable and not.
GHC 6.10 didn't make much of a difference, but there's no 64-bit build
for the Mac. If this seems to come up again I'll have to set up
64-bit Linux in a virtual machine, which seems a bit convoluted.
David
On Wed, Jan 28, 2009 at 7:37 PM, Duncan Coutts
On Wed, 2009-01-28 at 20:23 -0500, Ross Mellgren wrote:
Duncan, I think you must have some magics -- on my machine the original code also takes forever. Running with +RTS -S indicates it's allocating several gig of memory or more.
It runs in a tiny heap for me:
./circ2 +RTS -A10k -M20k -RTS 3141592653589764829
+RTS -S indicates it allocated 8,512 bytes.
Applying some bang patterns gives me ~8s for 10^8 and somewhat more than a minute for 10^9:
I wonder if it is the 64 vs 32 bit machine difference. I recall some ghc ticket about Int64 having rather poor performance on 32bit x86 machines. I don't have a 32bit x86 machine to hand so I cannot easily test it.
Duncan