Namazu-users-ja(旧)


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

Re: find_target の高速化



Katsuhiro Ueno <unnie@xxxxxxxxxxxxxx> wrote:

>大量のファイルに対して mknmz すると
>コマンド実行から実際にインデックスを作成し始めるまで
>結構時間がかかり、精神衛生上あまり好ましくありません (^^;
(snip)
>どうやら find_target の最後の sort でひっかかっているようですので、
>uniq & sort しながらターゲットを追加するように改造してみました。

なるほど。気づきませんでした。「find_target の最後の sort で
ひっかかっている」のが原因なら、もっと単純に解決できると思い
ます。

元のソースの

>-    @flist = sort fncmp @flist;

この部分を

      @flist = map  { $_->[0] }
	       sort { $a->[1] cmp $b->[1] } 
	       map  { my $tmp = $_; $tmp =~ s/(\d+)/sprintf("%08d", $1)/ge; 
		      [ $_, $tmp ] } @flist;

と修正するだけでいいと思います。 Schwartzian Transform と呼
ばれる技法です。

参考:

  <http://www.5sigma.com/perl/schwtr.html>
  <http://www.din.or.jp/~ohzaki/perl.htm#SortST>
  <http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/199909/mgp00039.html>


># ところで、こういう話は namazu-devel-ja のほうが
># 適切でしょうか…

はい、そう思います。

-- Satoru Takabayashi