I am currently using java and have read a lot about Erlang on the net and I have 2 big questions:
How much slower (if any) will Erlang be over simple Java. I'm assuming here that Java is going to be faster from the shootout benchmarks on the net (Erlang doesn't do that well). i.e. How many more cpus am I going to need to make the Erlang shine over single threaded java (in my given situation (below))?
After reading around Erlang for a while I've hit on a number of comments/posts that say that most large Erlang systems contain a good amount of C/C++. Is this for speed reasons (my assumption) or something else? i.e. Why is this required?
I have read about number of processors going up and threading models being hard (I agree) but I am looking to find out when the "line" is going to be crossed so that I can move language/paradigm at the right time.
A bit of background/context:
I am working on java services (server side) which are very cpu bound and easily made parallel. This is due to, typically, a single incoming update (tcp) triggering a change to multiple (100s) of outputs. The calculations are typically pretty simple (few loops, just lots of arithmetic) and the inputs are coming in pretty fast (100/s).
Currently we are running on 4 cpu machines and running multiple services on each (so multi-threading is pretty pointless and the java seems to run faster without the sync blocks etc required to make it multi-threaded). There is now a strong push for speed and we now have access to 24 processor machines (per process if required) so I am wondering how best to proceed - massively multi-threaded Java or something easier to code like Erlang.