webrickとrackとcgi.rbでベンチマーク
Rubyも2.0になったし、久しぶりに上の3つのライブラリで
CGIのパフォーマンスを測ってみた。
ちなみに、2.1devでやってみています。2.0とさほどかわらんだろ。
webrick
require 'webrick/cgi' class MyCGI < WEBrick::CGI def do_GET(req, res) res["content-type"] = "text/plain" ret = "Hello, Webrick\n" res.body = ret end end MyCGI.new.start()
rack
require 'rack' include Rack class HelloRack def call(env) [200, {"Content-Type" => "text/plain"}, ["Hello, Rack"]] end end Handler::CGI.run HelloRack.new
cgi.rb
require 'cgi' cgi=CGI.new("html3") cgi.out({"type"=>"text/plain"}) do "Hello, cgi.rb" end
コードは上のコードです。
apache benchで
ab -n 200 -c 25 http://localhost/~fujioka/...
とやって比較してみると、
1秒間にさばけるリクエスト数が、
webrick | rack(CGI) | cgi.rb |
24.41 | 18.82 | 55.22 |
うちのMacではこんな感じでした。
シンプルなcgiではcgi.rbが速いのは当然なのですが、
以前と比較すると、相対的にwebrickが早くなっています。
require が速くなったからですかね。