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

Back to archive index

Makoto Kuwata kwa****@kuwat*****
2012年 1月 14日 (土) 22:25:10 JST


桑田です。
質問ですが、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 メーリングリストの案内
Back to archive index