Web frameworks benchmarkを動くようにしてみた
たまには本と関係ない話題も。
Oleg Andreev(oleganza)さんの作った、Web frameworks benchmarkというアプリがあります。これは、Ruby製のWebアプリケーションフレームの、ベーシックな部分のベンチマークをまとめてとるためのツールです。
http://github.com/oleganza/web-frameworks-benchmark/tree/master
……なんですが、ちょっと古いせいか、現状のgemsでは動きませんでした。というわけで、修正してみたのが以下です。
http://github.com/takahashim/web-frameworks-benchmark/tree/master
実行の仕方は以下の通り。
$ ruby benchmark.rb start # 各サーバの起動とベンチマークの実行 $ ruby benchmark.rb run # 起動した後のベンチマークのみの実行 $ ruby benchmark.rb stop # 各サーバを停止
結果は以下のようになりました。
maki$ ruby benchmark.rb run Testing frameworks with 1000 requests and 10 connections: Benchmarking Sinatra on port 3900... >> ab -c 10 -n 1000 http://127.0.0.1:3900/ 2>/dev/null Benchmarking MerbVeryFlat on port 4002... >> ab -c 10 -n 1000 http://127.0.0.1:4002/ 2>/dev/null Benchmarking Camping on port 3301... >> ab -c 10 -n 1000 http://127.0.0.1:3301/ 2>/dev/null Benchmarking Merb on port 4000... >> ab -c 10 -n 1000 http://127.0.0.1:4000/ 2>/dev/null Benchmarking Rails on port 3000... >> ab -c 10 -n 1000 http://127.0.0.1:3000/ 2>/dev/null Benchmarking Ramaze on port 7000... >> ab -c 10 -n 1000 http://127.0.0.1:7000/ 2>/dev/null Sinatra => 558.96 rps MerbVeryFlat => 555.67 rps Merb => 542.76 rps Rails => 266.34 rps Ramaze => 128.91 rps Camping => 0.0 rps
あー、実はCampingはまだ動きません……でもMerbやSinatraよりは遅いそうなので、まあいいかなと。
Sinatraも早いけど、Merbもかなり頑張ってますねえ。Railsはもっと工夫すれば速くなるのかも? でも、Merbとの差はかなり大きいのでそうそうは縮まないかも。