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.
Applying some bang patterns gives me ~8s for 10^8 and somewhat more than
a minute for 10^9
It works great for me. 64 bit, GHC 6.10.1, no bang patterns or other
magic. Works about the same with both Int and Int64.
% time ./ctest
3141592649589764829
real 0m2.614s
user 0m2.610s
sys 0m0.003s
% time ./hstest
3141592653589764829
real 0m3.878s
user 0m3.870s
sys 0m0.003s
% ./hstest +RTS -S
./hstest +RTS -S
Alloc Copied Live GC GC TOT TOT Page Flts
bytes bytes bytes user elap user elap
3141592653589764829
8512 688 17136 0.00 0.00 3.94 3.94 0 0
(Gen: 1)
0 0.00 0.00
8,512 bytes allocated in the heap
688 bytes copied during GC
17,136 bytes maximum residency (1 sample(s))
19,728 bytes maximum slop
1 MB total memory in use (0 MB lost due to fragmentation)
Generation 0: 0 collections, 0 parallel, 0.00s, 0.00s elapsed
Generation 1: 1 collections, 0 parallel, 0.00s, 0.00s elapsed
INIT time 0.00s ( 0.00s elapsed)
MUT time 3.94s ( 3.94s elapsed)
GC time 0.00s ( 0.00s elapsed)
EXIT time 0.00s ( 0.00s elapsed)
Total time 3.94s ( 3.94s elapsed)
%GC time 0.0% (0.0% elapsed)
Alloc rate 2,158 bytes per MUT second
Productivity 99.9% of total user, 100.0% of total elapsed
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe