RackのCGIとcgi.rbでベンチマークしてみた
$ ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
Rackを使ったCGIのソース
#!/usr/bin/env ruby require 'rubygems' require 'rack' include Rack class HelloRack def call(env) [200, {"Content-Type" => "text/plain"}, ["Hello, Rack"]] end end Handler::CGI.run HelloRack.new
#!/usr/bin/env ruby require 'cgi' cgi=CGI.new("html3") cgi.out({"type"=>"text/plain"}) do "Hello, Rack" end
それでApacheBenchでとってみた。
50リクエストでかかる秒数を計測。
Rack CGI | cgi.rb |
39.746 seconds | 7.66 seconds |
当然こういう結果になると思っていたけど、
予想通りこうなった。
んで、遅い原因はrubygemsではないかと思い、
同じディレクトリにrackを入れ、検証。
#!/usr/bin/env ruby require 'rack' include Rack class HelloRack def call(env) [200, {"Content-Type" => "text/plain"}, ["Hello, Rack"]] end end Handler::CGI.run HelloRack.new
結果
Rack CGI | Rack CGI(without rubygems) | cgi.rb |
39.746 seconds | 8.80 sedonds | 7.66 seconds |
おお。なかなかイケるな。