[Tokyo.pm] Re: 単語を含む文字列の出現回数

taguti taguti @ secom-sis.co.jp
2002年 11月 19日 (火) 01:33:03 CST


田口です。

neo-zion> 細かいことですが。
neo-zion> 
neo-zion> 5文字以上の単語だけを抽出したいならば、
neo-zion> m/\b(\w{5,})\b/
neo-zion> というパターンを使うほうが速くなりませんか。
...
neo-zion> > 059: for my $w (sort keys %WORD) {
neo-zion> ここは、「sort」しなくても結果が同じになりませんか。

助言、有り難う御座います。
確かにそうです。
修正して実行してみました。
が、処理時間は全く同じでした。(びっくり)

1万件で31秒
5万件で500秒

もしかして、Perlコンパイラが既に最適化していたとか。(-_-;
そんなの、有り?
単語がアルファベット順でなく表示されているので、少なくとも
2つめの「sort」は削除してると思います。

16:14:53 $ TEST3WORD.pl URL_1M.txt
=== URI to WORD (3) \w{5,} & ! sort ===
end reading IN file. $rec=10000 $URIno=4383
end extracting WORD, $WORDno=4192
start word sumarize in URI...
1000: m_pcws ...
2000: a_ticket ...
3000: tn_nikye045_jpg ...
4000: tutorial ...
end $WORDREno=4192
save URI3WORD.uri...
save URI3WORD.wod...
save URI3WORD.wre...
All end, $secTaken=31
16:15:25 $
16:15:38 $
16:15:38 $ TEST3WORD.pl URL_5M.txt
=== URI to WORD (3) \w{5,} & ! sort ===
end reading IN file. $rec=50000 $URIno=18717
end extracting WORD, $WORDno=15080
start word sumarize in URI...
1000: bt2_up ...
2000: ennsyu ...
3000: bbs_buckground ...
4000: link_c ...
5000: gateway ...
6000: renkon ...
7000: top_tablehead1 ...
8000: top2_07 ...
9000: thujyougif_banner ...
10000: 20020814185339 ...
11000: orange ...
12000: b_ticket ...
13000: bymail ...
14000: whatlogo ...
15000: maho30 ...
end $WORDREno=15080
save URI3WORD.uri...
save URI3WORD.wod...
save URI3WORD.wre...
All end, $secTaken=500
16:24:01 $

Hirosi Taguti
H-taguchi @ secom.co.jp



Tokyo-pm メーリングリストの案内