2012年1月14日

[tDiary-users-talk: 0495] [patch] change to load plugins only once

桑田です。
質問ですが、tDiaryのプラグインは、複数回読み込む必要があるでしょうか。

tDiaryが遅いのは、プラグインの読み込みが原因のひとつみたいです。
これを減らすことができれば、パフォーマンスは改善できます。
調査したところ、リクエストごとに TDiary::TDiaryBase#load_plugins() が
複数回呼び出され、そのたびにプラグインが読み込み直されていました。

以下のパッチで、プラグインの読み込みを 1 回だけにすることができます。
ただし、これで正しいのかはわかりません。

------------------------------------------------------------
diff --git a/tdiary.rb b/tdiary.rb
index 94531d8..7ea0e1e 100644
--- a/tdiary.rb
+++ b/tdiary.rb
@@ -243,7 +243,7 @@ module TDiary

def load_plugins
calendar
- @plugin = Plugin::new(
+ @plugin ||= Plugin::new(
'conf' => @conf,
'mode' => mode,
'diaries' => @diaries,
------------------------------------------------------------


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: 4.06 [#/sec] (mean)
### after
Requests per second: 4.72 [#/sec] (mean) # 16% up

### (Ruby 1.9.3-p0)
### before
Requests per second: 2.23 [#/sec] (mean)
### after
Requests per second: 2.79 [#/sec] (mean) # 25% up


このパッチが正しいのかどうかは当方では判断しかねますが、
もし tDiary のプラグインは 1 回だけ読み込めばいいのであれば、
パッチの採用をご検討ください。

#なお、読み込みがいちばん重いのは plugins/50sp.rb でした。
#原因は未調査です。

以上です。

--
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日 22:25
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/108160
トラックバック
コメント
コメントする




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