大量の巨大なファイルを解析する必要があって、プログラムの効率を比べてみた。cat * > /dev/null をするだけで、十五分ぐらい掛かる。毎朝、走らせる予定のスクリプトなので速くしておきたいのだ。一回しか行わないのなら、十五分でも三十分でも大して気にしないのだが、朝の十五分は大差が出る。 そこで最初に目に付いたのが、文字列の検索。ある文字列を含む行は除外した後に、特定の文字列を含む行を処理する。grep と grep -v を連結したほうが早いか、awk のみで処理したほうが速いかを比べてみた。 Solaris で比べたところ、grep を連結したほうがどちらの順番でやっても awk の二倍の実時間三十分掛かった。grep | grep -v でも grep -v | grep でもあまり変わらない。awk だけで処理をすると十五分で終わる。この二つの大きな違いといえばパイプの IO