2012年1月14日

[tDiary-users-talk: 0494] [patch] change to load 'rexml' lazily forperformance

桑田といいます。
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

_______________________________________________
tDiary-users-talk mailing list
tDiary-users-talk@xxxxx
http://lists.sourceforge.jp/mailman/listinfo/tdiary-users-talk


投稿者 xml-rpc : 2012年1月14日 15:16
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/108159
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。