Text::MeCabの処理時間、その2

牧さんが、早速対応してくれました。
http://d.hatena.ne.jp/lestrrat/20060711#1152613230

処理時間を計測してみると次のようになります。

$ time ./wakati-text-mecab.pl < ~/spam-utf8.txt > /dev/null

real    0m0.041s
user    0m0.028s
sys     0m0.012s

$ time ./wakati-text-mecab.pl < ~/binzume_jigoku.txt > /dev/null

real    0m0.116s
user    0m0.104s
sys     0m0.012s

$ time ./wakati-text-mecab.pl < ~/kokushikan.txt > /dev/null

real    0m1.796s
user    0m1.640s
sys     0m0.156s

昨日の結果と比較すると次のようになります。今回の結果は「Text::MeCab改」としておきます。

ファイルサイズ[バイト] MeCab mecab-perl Text::MeCab Text::MeCab Text::Kakasi
1767 0.009 0.049 0.043 0.041 0.101
25496 0.045 0.086 0.641 0.116 0.180
1039324 1.357 1.535 - 1.796 1.658

致命的な状況は改善されました。
mecab-perlよりは少し遅いですが、処理速度の点では実用上問題ないものとなっています。恐らくforループ等のオーバーヘッド分が遅くなっている理由です。


ということで、問題が無くなったという報告です。感謝感謝。

補足事項

気になった点があります。処理時間にばらつきが結構あります。
一方、mecab-perlの場合は何回繰り返しても1.535±0.001秒という状態です。
ファイルのデータはディスクキャッシュ上に載っているはずなので、I/Oの処理時間というわけではないです。サーバではないので裏で何か動いている訳でもないですし。勝手にGCしているわけでもないでしょうし。何でしょう?

$ time ./wakati-text-mecab.pl < ~/kokushikan.txt > /dev/null

real    0m3.060s
user    0m2.800s
sys     0m0.256s
$ time ./wakati-text-mecab.pl < ~/kokushikan.txt > /dev/null

real    0m1.584s
user    0m1.436s
sys     0m0.148s
$ time ./wakati-text-mecab.pl < ~/kokushikan.txt > /dev/null

real    0m1.967s
user    0m1.840s
sys     0m0.120s
$ time ./wakati-text-mecab.pl < ~/kokushikan.txt > /dev/null

real    0m2.687s
user    0m2.472s
sys     0m0.208s