namazu-ml(ring)


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

Re: comparison between 1.3.0.10, 1.4.0.0-beta-8 and1.9.3 (Re: Namazu 1.9.3 (Re: Namazu 1.9.2)



# namazu-dev に振ります

sugiura@xxxxxxxxxxxx (Sugiura Shiro) wrote:

>昨日も試した Linux-users ML の最初から1万ファイルぐらい
>
>1.4.0.0-beta-8  549 sec.
>1.9.3           849 sec.    対1.4.0.0-8比  1.54645
>
>昨日の 1.9.2 での計測は conf.pl をそのまま使っていたので、MAX_MEMORY
>のデフォルト値が低く、作業途中で2回ぐらいデータ書き出しをしていたもの
>です。今回はそれを大きくしての作業で途中書き出しなしで計測しました。

なるほど。ところで、 1.4.0.0-beta-8 と 1.9.3 について、イン
デックスの合計サイズをそれぞれ教えてもらえませんか?


>DProf というのをLinux-usersのファイルの方でやってみたので、その結果も
>付けます。
(snip)
>Total Elapsed Time = 938.1626 Seconds
>         User Time = 803.8852 Seconds
>Exclusive Times
>%Time ExclSec CumulS #Calls sec/call Csec/c  Name
> 18.2   146.5 115.59 176076   0.0001 0.0001  mknmz::hash
> 15.1   121.5 107.23 807165   0.0002 0.0001  File::MMagic::readMagicLine
> 12.2   98.13 98.770   9965   0.0098 0.0099  File::MMagic::checktype_data
> 11.9   95.82 172.36 807165   0.0001 0.0002  File::MMagic::magicMatchStr
> 9.93   79.82 188.56   9943   0.0080 0.0190  mknmz::make_phrase_hash
> 9.51   76.48 75.415  59658   0.0013 0.0013  mknmz::wordcount_sub
> 5.85   46.99 47.743      1   46.996 47.742  find::finddir
> 4.44   35.68 297.94   9965   0.0036 0.0299  File::MMagic::checktype_contents
> 4.04   32.51 32.309   9810   0.0033 0.0033  Text::Kakasi::do_kakasi
> 3.93   31.57 65.704   9943   0.0032 0.0066  mknmz::put_field_index
> 3.74   30.06 140.21   9943   0.0030 0.0141  mknmz::count_words
> 2.66   21.35  8.644 218868   0.0001 0.0000  IO::File::open
> 2.37   19.05 40.027 218868   0.0001 0.0002  util::fopen
> 2.08   16.74 23.441 218868   0.0001 0.0001  IO::File::new
> 2.01   16.14 16.084   9965   0.0016 0.0016  mailnews::mailnews_citation_filter

これを見ると、文書形式の自動判別 (File::MMagic) に 43.64% の
時間を占められていることがわかります。

インデックス作成の対象とするファイルがすべてメイルであるとわ
かっているのに、自動判別に時間を取られるのは馬鹿らしいです。

というわけで、文書の形式を強制的に指定するオプションを mknmz 
に追加すると便利そうです。例:

  % mknmz --type=message/rfc822
  % mknmz --type=text/html
  % mknmz --type=application/pdf

message/rfc822 は特別に -h, --mailnews というオプションを割
り当てて、簡単に指定できるようにしたいと思います。

File::MMagic の overhead がなくなれば 1.4.0.0-beta-8 並の速
度が出るでしょう。

File::MMagic の checktype_contents() を使ってまともに文書形
式を判別すれば時間がかかるのは仕方がないので、 
checktype_byfilename() だけで判別するオプションを mknmz につ
けるとよさそうです。 mknmz --easyguessing といった感じで。

# %FILEEXTS の定義は少ないですね。Apache の mime.types から
# MIME type と Extension の対応表をもらってくるといいかな?

-- Satoru Takabayashi