Benchmarking microframeworks.
- cuba
- hobbit
- hobbit-routes (Hobbit with routes! (A proof of concept))
- sinatra
And of course, rack as the reference.
- MacBook Air (Intel Core i5, 4GB RAM)
- Thin web server
- ab - Apache HTTP server benchmarking tool
There is a config.ru
file in each directory with an application. Simply run:
$ bundle install
$ bundle exec rackup
$ ab -c 50 -n 1000 http://localhost:9292/
Microframework | Request per second | Time per request |
---|---|---|
Rack | 1392.34 [#/sec] (mean) | 35.911 [ms] (mean) |
Cuba | 1155.57 [#/sec] (mean) | 43.269 [ms] (mean) |
Hobbit | 1376.90 [#/sec] (mean) | 36.314 [ms] (mean) |
Hobbit with routes | 1134.86 [#/sec] (mean) | 44.058 [ms] (mean) |
Sinatra | 782.92 [#/sec] (mean) | 63.864 [ms] (mean) |
$ ab -c 50 -n 10000 http://localhost:9292/
Microframework | Request per second | Time per request |
---|---|---|
Rack | 1508.23 [#/sec] (mean) | 33.151 [ms] (mean) |
Cuba | 1159.09 [#/sec] (mean) | 43.137 [ms] (mean) |
Hobbit | 1447.53 [#/sec] (mean) | 34.542 [ms] (mean) |
Hobbit with routes | 1326.35 [#/sec] (mean) | 37.697 [ms] (mean) |
Sinatra | 971.33 [#/sec] (mean) | 51.476 [ms] (mean) |
$ ab -c 100 -n 1000 http://localhost:9292/
Microframework | Request per second | Time per request |
---|---|---|
Rack | 1351.94 [#/sec] (mean) | 73.968 [ms] (mean) |
Cuba | 1130.31 [#/sec] (mean) | 88.472 [ms] (mean) |
Hobbit | 1325.77 [#/sec] (mean) | 75.428 [ms] (mean) |
Hobbit with routes | 1249.96 [#/sec] (mean) | 80.002 [ms] (mean) |
Sinatra | 895.68 [#/sec] (mean) | 111.648 [ms] (mean) |
$ ab -c 100 -n 10000 http://localhost:9292/
Microframework | Request per second | Time per request |
---|---|---|
Rack | 1491.28 [#/sec] (mean) | 67.056 [ms] (mean) |
Cuba | 1168.82 [#/sec] (mean) | 85.556 [ms] (mean) |
Hobbit | 1424.99 [#/sec] (mean) | 70.176 [ms] (mean) |
Hobbit with routes | 624.10 [#/sec] (mean) | 160.231 [ms] (mean) |
Sinatra | 960.74 [#/sec] (mean) | 104.086 [ms] (mean) |
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
See the LICENSE.