2005年02月06日(Sun) 久しぶりにいい天気 [長年日記]
● ずんことガレージセールへ。
● [tDiary] リンク元強化プラグインを高速化したい
途中経過。
やっとこさ、キャッシュのしかたで速度がどう変わるか調べてみました。 使ったのは、この日誌でリンク元の多い日のうち、 検索エンジンから以外のリンクも少し含まれている2002年7月31日のものです。 リンク元のURLは770種類でした。
環境は、
tDiary version 2.1.0.20050127
、
disp_referrer.rb,v 1.45
(テストによっては検索エンジンをキャッシュするように改造)、
ja/disp_referrer.rb,v 1.20
を、
ruby 1.8.2 (2004-07-29) [i586-linux]
を
ruby-1.8.2-0.2.3m
というパケージから利用し、
ruby-uconv-0.4.12-2m
と
ruby-nora-0.0-0.20040310.3m
も有効にしました。
ベンチマークは、bashのtimeコマンドから実行しました。 index.rbの入力には環境変数REQUEST_METHODとQUERY_STRINGを設定し、 出力はファイルにリダイレクトしてあります。 まったく同じ条件で5回連続的に実行し、 2-5回目の平均と母集団の標準偏差を求めました。
下記で、B以下はすべてリンク元強化プラグインを有効にしてあります。 Bはキャッシュを使わない場合、 C以下はキャッシュを使う場合です。 CとDは元々キャッシュがない状態でアクセスを受け、 キャッシュをつくりながら表示しています。 EとFは当日分のみがキャッシュされています。 GとHは昨日の日誌の分まで、この日誌の全日分のリンク元がキャッシュされています。 この時のキャッシュの大きさは、検索エンジンを除いて171KB、含めて4.1MBでした。 C、E、GではCVS版の動作で、 検索エンジンのURLの変換結果はキャッシュされていません。 D、F、Hでは検索エンジンのURLの変換結果もキャッシュするようにしました。
条件 | real(sec) | user(sec) | system(sec) |
---|---|---|---|
A 素のtDiary | 5.417±0.204 | 4.787±0.015 | 0.155±0.010 |
B キャッシュなし | 9.283±0.034 | 8.363±0.009 | 0.230±0.014 |
C キャッシュを作りながら | 5.767±0.029 | 5.132±0.071 | 0.192±0.028 |
D 検索エンジンあり | 5.412±0.131 | 4.717±0.018 | 0.226±0.020 |
E 当日分のみキャッシュあり | 5.277±0.036 | 4.716±0.025 | 0.155±0.018 |
F 検索エンジンあり | 2.120±0.033 | 1.721±0.031 | 0.145±0.021 |
G 日記全部のキャッシュあり | 5.165±0.405 | 4.085±0.032 | 0.249±0.030 |
H 検索エンジンあり | 6.511±0.049 | 5.271±0.013 | 0.741±0.009 |
ここからわかる改良項目は下記のようなものでしょうか?
- 1. キャッシュしない時の動作を改善する
- キャッシュのないリンク元強化プラグインは素のリンク元表示より遅い (AとBの比較)
- キャッシュを作るとキャッシュを作らないより速い(BとCD)
- 2. 検索エンジンをキャッシュするようにする
- 検索エンジンをキャッシュしておくと速い(CとD、EとF)
- 3. 月別のキャッシュを使うようにする
- キャッシュが大きくなると速度が遅くなる(EFGとH)
- 4. キャッシュの合計を制限できるようにする
4.は、このホストのようにquotaのある環境ではぜひ必要です。 最終アクセス時刻の古いキャッシュファイルから消していくようにしようと思って ますがどうでしょうか? 1.についてはプロファイルを取ってみないといけないですね。 ダミーのPStoreかな?とも思うのだけどどうだろう? 速いマシンが欲しいなぁ…。2. の改良は簡単なのですが、3.と4.については 新しいクラスを作る必要があるようにも思えます。
さて、残りの作業は次の機会を待たなくちゃいけないような気もします。 すまーん。 もっとこうした方がいいんじゃない?とかツッコミよろしくです。
最近のツッコまれどころ