namazu-ml(avocado)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mknmz's Order



sugiura@xxxxxxxxxxxx (Sugiura Shiro) wrote:

>それぞれのファイルは1つだいたい3Kbyte弱のそれなりの分布を見せてい
>ると思うことを考えると、mknmzはファイルサイズが一定だと仮定した場
>合、件数"N"ではなくどっちかというと、"N^2"とか(そこまでひどくはな
>いと思うが)そういうオーダーに見えるんですけど、その認識は当たらず
>しも遠からずということでよろしいでしょうか?

さすがにそこまでひどくはありませんが、効率が悪いことはたしかです。

標準では対象ファイルを 5MB 分処理した時点でテンポラリファイルに書
き出し、それ以前のテンポラリファイルとマージします。よって、 220
MB ではその処理が 44回繰り返されます。

しかも処理が進むにつれてその処理は遅くなっていきます。マージの処理
の部分だけを見るとちょうど等差数列のオーダーになると思います。

メモリをたくさん搭載しているなら Makefile の 

| OPT_ON_MEMORY_MAX	= 5000000

を修正するとマージ処理の回数を減らせます。

# DBMを採用すればもっとましだったのかもしれません


>で、それを踏まえてお伺いしたいことがあるのですが、FAQに出ていた30
>万件以上のファイルをmknmzでindexを作ったと言う方はどのぐらい時間が
>かかったのでしょう?

私が受け取ったメイルによると

| Files: 377,874 files
| Size: 1,349,975,210 bytes
| Keywords: 2,375,372 words
| Wakati: /usr/local/bin/kakasi -ieuc -oeuc -Ea -w
| Version: 1.2.0.1
| Time: 368931 sec.

だそうです。約102時間ですね。マシンの構成はわかりません。


>自分のマシンの中のニュース記事が日々増えていくことを考えると、ちょ
>っと参考にしたいなと思った次第です。

更新はそれほど時間がかからないと思います。インデックスの大部分を書
き直すので一瞬とは言えませんが…。

-- Satoru Takabayashi