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