Eight Myths of Erlang Performance
erlang.org
erlang.org
(not flaming, really asking) Can any erlang guru explain in a few lines why Erlang on a quad-core linux systems doesn't beat Java?
Ubuntu™ : Intel® Q6600® quad-core http://shootout.alioth.debian.org/u32q/erlang.php
Ubuntu™ : Intel® Q6600® quad-core x64 http://shootout.alioth.debian.org/u64q/erlang.php
This surprised me after being told many times by a friend who does Java+Erlang programming otherwise. What's missing in the picture? Is that Erlang implementation not multicore aware or something?
Have the Java programs been re-written for multi-core? Have the Erlang programs been re-written for multi-core?
Have you looked at the individual benchmarks? Have you looked at the individual programs?
So the question is, given X amount of time to create a program, which runs faster? Not, given unlimited amounts of time, which is faster?
So tests like this don't necessarily reflect the real world.
That said, I don't really know which way it is, JAVA or Erlang, just sayin... :)
No, it's not as easy. It's possible to make it perform much better, though, through micro-optimization of the specific operations needed.
It's similar to doing a problem in assembly. On the macro level, it takes far less effort to make a performant system in a high level language, however for simple algorithms that are commonly used, you can typically get a threefold speed improvement by doing them in assembly, for a significant increase in implementation effort.
Wow, I never thought I'd compare Java to assembly.
The Erlang pitch is "Distributed, reliable, soft real-time concurrent systems".
Distributed supervised processes are a mechanism to achieve error containment and fault tolerance.
"making reliable systems in the presence of software errors" (pdf) http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf
* Erlang: Hydra.
* Tail recursion: Jörmungandr.
Ok, that's the low hanging fruit.