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