3

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.

4
  • 3
    What factors have caused you to narrow it down to those three?
    – user40980
    Apr 9, 2013 at 3:21
  • great question, I struggle to answer that myself. My reasoning was for parallelizing the processing of each request, the ability to handle a lot of concurrent requests while using memory and cpu efficiently, and I'm interested in learning one of them honestly. Any other language suggestions are also welcome.
    – tonyl7126
    Apr 9, 2013 at 3:58
  • How are these 1000s of requests/second coming in? HTTP? Apr 9, 2013 at 5:15
  • Yes, it is HTTP.
    – tonyl7126
    Apr 9, 2013 at 8:16

2 Answers 2

4

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.

1

I'd pick Go, but then I've had a good time using it for "real stuff" for a while and never got past the "play stage" with Erlang and haven't used Clojure.

It seems like it's a problem that's small enough that it might be a good test case for trying all three languages so you can see how you like each?

Maybe report back what you find when you are done; or go to the codereview stack site for suggestions on each program. :-)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.