Before I posted the a REST web api shootout in 5 different languages I chatted with my friend and colleague, Kevin, about it. He’s very fond of Perl and the results clearly hit a nerve. He did some heavy digging into the Perl performance and found some very interesting data, which he summarizes very well in It’s Not the Language. He also pointed me at The Ruby Web Benchmark Report.
Clearly, my tests and implementations were very simple. My goal was to be simple (Yay, for reaching my goal on that). I did not wish to spend hours researching a large number of implementation choices. Instead I wanted to get the code running with as little effort as possible. The implementations I chose were the result of quick online searches to find choices that seemed to have some mind share or popularity.
Popularity is of course no indicator of excellence or, in this case, performance. Both of the above posts make that abundantly clear. I am also a firm believer in testing for performance, but for my simple shootout I was looking for the low bar and getting things running. While I still feel that my test is a rough approximation to “out of the box” performance I realize that there is a lot missing.
I could easily shrug that off and blame the developers and community for not identifying great implementation approaches more clearly. That doesn’t lead to better understanding and much is lost by not getting expert level knowledge into the game.
Also, to be fair, Kevin had identified a couple of improvements in the Perl implementation before my original post. I ignored them for a simple reason: none of the other implementations had the benefit of having an expert review and weigh in.
That said, I realize that my implementations can very likely be improved greatly.
So, if you are an expert or just much better than me (not a tall order) in one of these languages shoot me a pull request on github for opennomad/web-api-compare and I’ll be happy to re-run my tests.
Here’s to getting to more than my simple truthiness!