2006年10月30日

[Namazu-devel-ja 1347] Re: mknmz の処理時間短縮

寺西です。

Yukio USUDA wrote:
>
> どうやら[Namazu-devel-ja 1323]は環境変数 LANG を設定
> していない状態で動作させていたようです。

あぁ、なるほど。

日本語処理でないなら、$$contref の中身が変わりますね。

> 処理時間の比は半分ではなく 3/4 ぐらいのようです。

インデックスの書き出し回数n と速度は O(n) ではないので、書き出し回数
が増えれば、その比率もどんどん変わってくると思います。

> $ON_MEMORY_MAX 初期値(19回インデックス書きだしあり)

19回もインデックスを書き出すのは、ちょっと多いような気はしますね。

19回で 1/4 が中間ファイル書き出し処理に割かれているということは、
同等の文書を1万件とか処理すると、200回書き出しぐらいですから、
殆どが中間ファイル書き出し処理になりそうな勢いですね。

# やはり大量の文書を処理するのには向いていないなぁ。

> %Time ExclSec CumulS #Calls sec/call Csec/c Name
> 13.9 11.19 20.512 1269 0.0088 0.0162 mknmz::make_phrase_hash
> 11.6 9.320 9.320 873244 0.0000 0.0000 mknmz::hash
> 10.1 8.129 8.129 5089 0.0016 0.0016 mknmz::wordcount_sub
> 8.13 6.526 6.525 22160 0.0003 0.0003 File::MMagic::magicMatchStr
> 6.56 5.260 5.260 176718 0.0000 0.0000 Text::Kakasi::xs_do_kakasi
> 5.28 4.239 20.643 1269 0.0033 0.0163 mknmz::count_words
> 4.80 3.855 3.855 865 0.0045 0.0045 html::get_title_attr
> 4.09 3.285 3.285 865 0.0038 0.0038 html::get_alt_attr
> 3.73 2.994 5.704 825 0.0036 0.0069 util::syscmd
> 2.60 2.085 2.085 2538 0.0008 0.0008 gfilter::line_adjust_filter
> 2.37 1.905 1.905 2538 0.0008 0.0008 NKF::nkf
> 2.31 1.850 1.947 1283 0.0014 0.0015 File::MMagic::checktype_data

hash の回数が多い分、やっぱり効いていますね。
よく使うフレーズはhash値をキャッシュに置いて、毎回計算しないと速く
なりそうですが...キャッシュのヒット率を維持するにはキャッシュサイズ
が大きくないとダメかもしれないので、う〜ん、改善はしないかなぁ。

とりあえず hash の改良案です。

sub hash ($) {
my ($word) = @_;

my $len = length($word);
my $hash = 0;
for (my $i = 0; $i < $len; $i++) {
$hash ^= $Seed[$i & 0x03][ord(substr $word, $i, 1)];
# $word =~ s/^.//; is slower
}
return $hash & 65535;
}
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E
_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

投稿者 xml-rpc : 2006年10月30日 04:46
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/48512
トラックバック
コメント
コメントする




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