speedup help
Bill Wood
wtwjek@winternet.com
Sat, 08 Mar 2003 02:26:13 -0600
. . .
>
> > Oleg's blew the heap at 847; mine valiantly struggled on 'til it blew
> > the heap at 1910.
>
> Hmm, I managed to compute bernoulli 2000 and even bernoulli 3000. The
> code is included. It took 7 minutes (2GHZ Pentium IV, 1GB memory) to
> compute bernoulli 2000 and 33 minutes for bernoulli 3000. I monitored
> the memory usage of the compiled application using top and found that
> the resident set stayed at 30MB, which is a little bit less than the
> resident set for Emacs. My emacs has a dozen of open windows, and has
> been running for a month. Just for the record, here's the result of
> bernoulli 3000:
>
> (-2891939 ...6744 other digits... 81) % 12072109463901626300591430
Well, kudos to Oleg! I just ran his code from the msg this one replies
to and got similar results: On a 650 Mhz Athlon with 128MB RAM I
compiled with "ghc -O" (GHC 5.00.1). Using the "time" command,
bernoulli 2000 took 490 sec. user time while bernoulli 3000 took 2170
sec.
user time. Notice there were no heap overflows this time. I hope
someone can explain the differences in space behavior between the
version
in Oleg's mail of March 6 and this version. I'm surprised we are as
close
as we are in time given that my processor is less than half as fast. I
would also expect that my having 1/8-th the memory he has would slow me
down more due to page faulting.
The current version also fixes a minor glitch: the earlier version gave
B_0 = 0 instead of 1.
I think I got the right results for B_3000: My print-out had the same
denominator along with a 6762-digit numerator with the same initial
seven and final two digits. I don't get 6744 digits in the middle,
however.
I'm impressed by the good performance characteristics of high-level
Haskell code.
Nice work Oleg,
-- Bill Wood
wtwjek@winternet.com