Tim Watson schrieb:
>http://shootout.alioth.debian.org/u64q/benchmark.php?test=pidigits&lang=all
Seems that shootout is a benchmark and a programming
contest at the same time. The Erlang PI solution, which
ranks after the Java solution, uses only one process
for the computation (plus one for IO), whereas the
Java solution uses 3 threads for the computation.
That many of the Java solutions are multi-threaded
is seen by the ratio of CPU secs and Elapsed sec.
But interestingly the average ratio for Erlang is also
high. I guess the ratio is rather an effect of the
programmed solution design, than of the compiler backend or
language runtime system. For example the Erlang
fannkuch-redux spawns 12 processes.
Here are the ratios and the total times:
Java 7 -server Erlang HiPE
CPU Elapsed Ratio CPU Elapsed Ratio
k-nucleotide 28.41 7.80 3.6 384.87 138.94 2.8
mandelbrot 27.49 7.01 3.9 266.21 75.90 3.5
reverse-complement 2.67 1.27 2.1 20.36 10.32 2.0
fannkuch-redux 68.93 17.45 4.0 503.82 126.59 4.0
fasta 5.26 5.18 1.0 31.07 31.07 1.0
n-body 22.51 22.49 1.0 129.44 129.48 1.0
pidigits 8.57 3.86 2.2 16.28 15.13 1.1
binary-trees 18.02 8.66 2.1 72.11 28.15 2.6
regex-dna 36.57 12.35 3.0 150.17 40.10 3.7
spectral-norm 17.57 4.51 3.9 47.65 12.12 3.9
Total 236.00 90.58 2.6 1621.98 607.80 2.7
(Source:
http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=java&lang2=hipe)
But when the programming is similar, i.e. high ratio, one
might guess that the tests then boil down to a comparison
of the compiler backend and the language runtime system.
The total elapsed time 607.80 secs Erlang vs 90.58 secs Java reminds
me of the naive reverse bachmark I did, i.e. 60ms vs 15ms (turbo).
But its a little worse, and I didn't use Erlang HIPE. The figures
for Erlang are much worse.
So micro benchmarks can give you a first impression of what one
has to expect from non-micro benchmarks. Kind of love at first
sight, and then get disappointed? But the above benchmarks
would sure turn my consumer box into a frying pan (ventilator
kicking in), with all this parallelism.
Bye