Clojure/erlang/go for high volume server

clojureerlanggohigh performance

I have a project that will need to handle 1000s of requests a second with a decent amount of processing for each. For the most part, the processing will be done on a list of items, basically filtering it and returning a smaller list. This process can be done in parallel fairly easily and I should also say, speed is important. I've narrowed my language of choice for the project down to clojure, erlang, and go, and have researched them all to a moderate degree.

My question is, what factors should I be looking at in my decision? What language is better for what (examples would be great)? Because it's a little difficult for me to tell.

Best Answer

Advantage of Erlang is that it has distributed processing including fail-over built in while for the other two languages you would have to give a bit of thought to making sure it can run on multiple servers in parallel. If the requests are independent, it will be trivial in any language, if they are strongly dependent, Erlang may give some advantage.

For the rest, hardware is cheap compared to developer time, so choose the language depending on what your team is most comfortable with.

Benchmarks suggest Erlang is the slowest of the three, but than it's just benchmark and the relation may be completely different in your particular case, so don't give it much thought. For what it's worth most web applications out there is implemented in PHP, Ruby and Python and they are the three slowest languages according to benchmarks. But they are easy to write in and reading the data is bigger bottleneck for most webs anyway, so it ends up being cheaper even with the bit extra hardware needed.

Related Topic