2014年2月26日1件のコメント先日の記事いまさらgrepが10倍高速化したのはなぜかが思わぬ閲覧数を稼いでしまい、トルコ語の知識を日本に広めるのに大きな貢献をしたような気がしますが、みなさんいかがお過ごしでしょうか。実は先日の記事を書いた時にはすでに2.18がリリースされてたのだが、今回は2.17のときと違って日本の大手メディアが取り上げてなかったので、ついつい見落としていた。grep-2.17]なんということでしょう。-iオプションでUTF8のときは2.17で10倍速くなっていたのだが、それ以外のマルチバイトロケールのときは200倍遅くなっていた。退化の原因は、2.17で加えられた変更そのものだった。関連するコミットはこれ:http://git.savannah.gnu.org/cgit/grep.git/commit/?id=c7c8bcdefe7be5f59a242eea63df7f64eacb6a09テストはja_JP.eucJPでやっている(日本語のこと気にしてくれてありがとう!)つまり流れとしては以下のとおり。上記の変更でUTF8以外のとき、200倍遅くなっていた↓UTF8以外のマルチバイトのときは、正規表現変換はせずに、従来の方法で検索するように変更(バージョン2.18としてリリース)つまり、現在の実装としては、UTF8のときは検索文字列を正規表現に変換し、それ以外マルチバイトロケールの場合はテキストの方を変換してから検索することになっている。先日説明したトルコ語のI,i問題(あるいはトルコ語以外でも言語によっては大文字小文字でバイト数が違う問題)は、UTF8以外では発生しないらしい。全体的にバージョン番号が間違ってたので直しました。コメントをキャンセルメールアドレスが公開されることはありません。