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
手元の環境(パソコンっぽく使ってる旧いMacBook)だと値がふらつくので回数をちょっと増やしたりしましたが、傾向は同じようなもんでした。
xibbarさんにならって1秒間にさばけるリクエスト。
webrick/cgi | webrick/cgi + druby | cgi.rb |
---|---|---|
16.3 | 28.0 | 72.7 |
アプリケーション自体の読み込みとかいろんな資源の準備とかあると真ん中の構成が有利になると思うんだけど、また別の機会に。
短命な方をRMIなrubyで、長命なデーモンをjrubyで構成するのはどうなんだろうね。