@m_seki の

I like ruby tooから引っ越し

真似してabしてみました。

id:xibbarさんの記事を見て、いつものCGIで実験してみました。
http://d.hatena.ne.jp/xibbar/20110103#1294000013

件の記事のcgi.rbとwebrick/cgi.rbと、私がいつも使ってるCGIとで比べてみました。

いつものCGI

#!/usr/local/bin/ruby

require 'drb/drb'

DRb.start_service
ro = DRbObject.new_with_uri('druby://localhost:56789')
ro.start(ENV.to_hash, $stdin, $stdout)

デーモン側はこっち。

require 'drb/drb'
require 'webrick/cgi'

class MyCGI < WEBrick::CGI
  def do_GET(req, res)
    res["content-type"] = "text/plain"
    ret = "hello world\n"
    res.body = ret
  end
end

DRb.start_service('druby://localhost:56789', MyCGI.new)
DRb.thread.join

最初にデーモンを動かしてからCGIスクリプトを動かします。

手元の環境(パソコンっぽく使ってる旧いMacBook)だと値がふらつくので回数をちょっと増やしたりしましたが、傾向は同じようなもんでした。

xibbarさんにならって1秒間にさばけるリクエスト。

webrick/cgi webrick/cgi + druby cgi.rb
16.3 28.0 72.7

アプリケーション自体の読み込みとかいろんな資源の準備とかあると真ん中の構成が有利になると思うんだけど、また別の機会に。

短命な方をRMIrubyで、長命なデーモンをjrubyで構成するのはどうなんだろうね。

あわせて読みたい。(二冊目にどうぞ)

dRubyによる分散・Webプログラミング