Makoto Kuwata
kwa****@kuwat*****
2012年 1月 14日 (土) 15:16:29 JST
桑田といいます。 tDiary (3.1.1) のパフォーマンスを改善するために、 REXML の require を遅延させてはどうでしょうか。 ・REXML は読みこみがかなり重いライブラリであるため、これを読み込まないように するだけで簡単にパフォーマンスを改善できる (ただし CGI の場合) ・REXML は amazon plugin で利用されており、標準で enable になっているが、 必ずしも amazon plugin の機能をみんなが使っているわけではない パッチを添付します。 ------------------------------------------------------------ diff --git a/misc/plugin/amazon.rb b/misc/plugin/amazon.rb index 47e2519..ed5fdfa 100644 --- a/misc/plugin/amazon.rb +++ b/misc/plugin/amazon.rb @@ -8,7 +8,7 @@ require 'net/http' require 'uri' require 'timeout' -require 'rexml/document' +autoload :REXML, 'rexml/document' # do not change these variables @amazon_subscription_id = '1CVA98NEF1G753PFESR2' diff --git a/misc/plugin/amazon/amazonimg.rb b/misc/plugin/amazon/amazonimg.rb index c84a760..b3dc984 100644 --- a/misc/plugin/amazon/amazonimg.rb +++ b/misc/plugin/amazon/amazonimg.rb @@ -51,7 +51,7 @@ require 'cgi' require 'open-uri' require 'timeout' -require 'rexml/document' +autoload :REXML, 'rexml/document' def amazon_call_ecs( asin, country = nil ) aid = @amazon_aid || 'cshs-22' ------------------------------------------------------------ apache bench での計測結果です。 (MacOS X 10.6, Apache 2.2.14, tDiary 3.1.1, CPU Core2Duo 2GHz) ### (Ruby 1.8.7-p334) ### before Requests per second: 3.46 [#/sec] (mean) ### after Requests per second: 4.09 [#/sec] (mean) # 18% up ### (Ruby 1.9.3-p0) ### before Requests per second: 1.93 [#/sec] (mean) ### after Requests per second: 2.23 [#/sec] (mean) # 16% up 同じことは rss.rb にも言えます。 rss.rb は REXML よりさらに読み込みが重いライブラリなので、 これも読み込みを遅延できるならしたほうがいいと思います。 たた、rss.rb を使っているのは recent_rss.rb だけであり、 これはデフォルトでは disable になっているので、デフォルトの 状態でつかっている限りは影響はないです。 その他、主なライブラリの読み込みコストについては http://www.slideshare.net/kwatch/how-to-make-ruby-cgi-script-faster-cgi をご覧ください。 以上です。パッチの取り込みをご検討下さるようお願いします。 -- makoto kuwata