-
13
AUG
2007Erlang Message Passing
Like many Pragmatic Programmer fans, I've been having a look at Erlang recently by working my way through Programming Erlang. In the book, the author includes a challenge: build a message ring of processes of size M and send a message around the ring N times, timing how long this takes. The author also suggests doing this in other languages and comparing the results. Having now done this, I can tell you that it is an interesting exercise.
First, the Erlang results. Here's a sample run that creates 30,000 processes and sends a message around that ring 1,000 times:
$ erl -noshell -s solution start 30000 1000 Creating 30000 processes (32768 allowed)... Done. Timer started. Sending a message around the ring 1000 times... Done: success Time in seconds: 29
So we see about 30,000,000 message passes there in roughly 30 seconds. I should also note that Erlang creates those processes very, very fast. It's possible to raise the process limit shown there, but I'm more interested in comparing what these languages can do out of the box.