かずひこです。
今のブームは非同期ですよ、というわけで、asynchronous tDiaryについて、妄
想しましょうのコーナーです。
とりあえず、header_proc, footer_proc, update_proc で、各procごとにどれく
らい時間がかかってるのか調べてみました。
(Pentium4 2.8GHzの第二tDiary.Netの私の日記で、日本時間午前6時頃に、日記
の閲覧とツッコミで計測。単位は秒)
header_proc
0.048378 05referer.rb
0.001860 account_ad.rb
0.001406 my-sequel.rb
0.001339 00default.rb
0.000488 append-css.rb
0.000096 search_control.rb
0.000083 00makerss.rb
0.000027 search_form.rb
0.000024 whatsnew.rb
予想どおり05referer.rbが時間をとっていますが、レスポンス全体の中ではそん
なに時間をとっているわけではない気がします。
footer_proc
0.000545 my-sequel.rb
0.000098 highlight.rb
0.000026 whatsnew.rb
my-sequel.rbがheader_procとあわせるとそれなりに時間をとっていますが、で
もまあ合計0.002秒です。
update_proc
1.215704 estraier-register.rb
0.996328 category.rb
0.348874 00makerss.rb
0.290990 comment_mail-qmail.rb
0.236836 squeeze.rb
0.019455 recent_comment3.rb
0.000086 recent_trackback3.rb
0.000040 ping.rb
0.000016 tb-send.rb
やはり、一番時間をとっているのは検索インデックスの更新です。ただし下位の
三つは、ツッコミ時なので事実上何もしていないから速いだけです。
でも、ツッコミなのにcategory.rbは時間をくってるのは何故だ? というわけ
で、以下のパッチはどうでしょう?
--- category.rb
+++ category.rb
@@ -632,6 +632,7 @@
# when update diary, update cache
#
add_update_proc do
+ break unless /^(append|replace)$/ =~ @mode
cache = @category_cache
list = []
diary = @diaries[@date.strftime('%Y%m%d')]
私の日記はあまりプラグインを有効にしていないので、大した実験結果ではあり
ませんが、なんとなくの感想を書いておきます。
* 更新時のプラグインは時間がかかるのが多く、しかも同期である必要がないも
のがほとんどなので、やる価値はかなりある。閲覧にくらべれば更新の頻度は
ずっと低いが、より気持ちよくツッコミしていただくには重要かな。
* 閲覧時のプラグインはあまり負荷になっていない(でもリファラを全捨てする
とそれなりに速くなるのは昔実験したので、リファラだけは非同期にする価値が
ありそう
* となると、閲覧時のボトルネックはファイル形式というかデータ読み込みなの
かなぁ。とはいえ月単位ベースなデータ管理は、歴史的事情もあるけど、セーフ
モード対策という面も大きいから、どうしたらいいの?
かずひこ
|