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

cgi.rbを使ったCGIアプリのソース

#!/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

おお。なかなかイケるな。