egrep [wW] [oO] [rR] [dD]がgrep -i wordよりも速いのはなぜですか?

egrep [wW] [oO] [rR] [dD]がgrep -i wordよりも速いのはなぜですか?

私はそれをより頻繁に使用し、大文字または小文字のすべての文字を一致させるよりも速度が遅いgrep -iことがわかりました。egrep

$ time grep -iq "thats" testfile

real    0m0.041s
user    0m0.038s
sys     0m0.003s
$ time egrep -q "[tT][hH][aA][tT][sS]" testfile

real    0m0.010s
user    0m0.003s
sys     0m0.006s

grep -i未実行の追加テストが行​​われましたかegrep

ベストアンサー1

grep -i 'a'grep '[Aa]'純粋なASCII言語環境と同じです。 Unicode ロケールでは文字同等性と変換が複雑になる可能性があるため、grep同等文字を確認するには追加の作業が必要になる場合があります。関連ロケールは、LC_CTYPEバイトが文字として解釈される方法を決定することです。

私の経験では、grepUTF-8ロケールでGNUを呼び出すと速度が遅くなる可能性があります。 ASCII文字のみを検索することがわかっている場合は、ASCII専用ロケールから呼び出す方が高速かもしれません。期待した

time LC_ALL=C grep -iq "thats" testfile
time LC_ALL=C egrep -q "[tT][hH][aA][tT][sS]" testfile

区別できない時間を生み出すだろう。

つまり、grepDebian jessieでGNUを使用して結果を再現することはできませんでした(ただしテストファイルを指定していません)。 ASCIIロケール(LC_ALL=C)を設定するとgrep -iより高速です。影響は文字列の正確な特性によって異なります。たとえば、繰り返される文字を含む文字列はパフォーマンスを低下させます(これは期待できることです)。

おすすめ記事