Web Framework Comparison Benchmark

Hi all,

For my final year project I have been comparing web frameworks to get performance benchmarks that others can then use when deciding upon a web framework. The idea is simple; first you build the same simple applications in another web framework and then use the tests that I provide. You then compare your results against my benchmarks to help in making a decision on your chosen web framework. I started out with 3 web frameworks; Ruby on Rails, Chicago Boss and Flask. I chose Rails because of its status as the go to web framework, Boss because of its fast growing popularity and because of its Erlang implementation and finally Flask because it is very different to the first two in that it is a “bare bones” web micro-framework. The findings are interesting and can be seen here: http://web-framework-comparison.blogspot.ie/2015/04/benchmarks-i-am-final-year-student-in.html

Thanks for taking the time to read this and hopefully it might be of some benefit.

Darren Daly.

I think you should also consider including Laravel (PHP), Phoenix (Elixir) and Luminus (Clojure).


I was under a time constraint with this project, but may consider doing that in the future.

Hey, just as an FYI, you probably aren’t going to get anything out of comparing these frameworks in anything but “production server mode”.

For Rails’s case at the very least, literally no one runs a web site on WEBrick or Thin. Most configurations use Unicorn , Puma, or Passenger and/or NGINX. You’ll probably get more mileage out of comparing the different server options than development mode on Rails, which is engineered to be the opposite of fast for ease of development.

For sake of completeness, as well, I would include the .conf files for Apache that were used for the comparison. It’s not really telling a full story unless we know configuration values - thread pooling/# of threads can tell a large part as to why these benchmarks are so different. Things like # of persistent connections to the DB can also effect these numbers ( if 1000 threads are waiting on 5 connections, everyone is sad ), and should probably also be up front.

I’m going to correct myself - there are some cases for using Thin.

Thanks for your feedback. I compared rails in development mode for completeness sake. I also did production server tests using passenger in the case of rails to which the results can be found on the blog post. The .conf file can be found here: https://github.com/archerydwd/Apache-Rails-Passenger-Ubuntu/blob/master/README.md