[Shootout-list] Re: [Caml-list] Ocaml sums the harmonic series -- four ways, four benchmarks: floating point performance

John Prevost j.prevost at gmail.com
Sun Apr 23 22:54:52 UTC 2006


On Thu, 13 Jan 2005 10:53:16 -0500, Will M. Farr <farr at mit.edu> wrote:
> Each invocation was compiled with "ocamlopt -unsafe -noassert
> -o harmonic harmonic.ml".  It looks like using references and
> loops is *by far* the fastest (and also that my PowerBook is
> pretty slow to convert int->float, but I don't think this is
> related to ocaml, since the C version does the same thing).

Note that this is dependent on what CPU you're using.  On my test
system (700MHz AMD Athlon with 256MB of memory), I saw this behavior:

time ./harmonic 1000000000:

harmonic:
  you: 2m01.590s .. 0m00.790s
   me: 0m30.811s .. 0m00.120s

harmonic2:
  you: 2m00.340s .. 0m00.440s
   me: 0m30.847s .. 0m00.140s

harmonic3:
  you: 1m44.350s .. 0m00.740s
   me: 0m38.002s .. 0m00.130s

harmonic4:
  you: 1m12.680s .. 0m00.430s
   me: 1m14.603s .. 0m00.220s

So on this system, harmonic4 is by far the slowest, and the fastest
version is the one that uses float_of_int and tail recursion.  It's
unclear to me how much of this is that the Intel compiler is simply
better optimized than the PPC compiler.

John.



More information about the Shootout-list mailing list