2016-04-26 14 views
4

速度差

sed -ne '10{p;q;}' file.txt 

&

sed -ne '10{p;q;}' <file.txt 

の違いは何ですか?

私はsedがここで何をしているのか知っています。私が関心を寄せているのは、入力が受け継がれる方法です。ちょうど私はsedの例を取っ​​た。

exec 4<&0; exec 0<file.txt;sed -ne '10{p;q;}'-;exec 0<&4 

が起こっている(4によって、私はちょうど一時的なファイルディスクリプタを意味する):私は以下のようなもの両方例に(これはあまりにも深刻な誤解することができます)と信じ

したがって、どちらも同じように高速である必要があります。 私は間違っていますですか?

+2

正しくない。最初のケースではsedはmmap-ed入力を使用することができますが、これは高速であり、おそらく他の重要ではないまたはより重要な違いがあります。 – gordon

答えて

2

どちらも、sedが処理するファイルのファイル記述子で終わります。その違いはファイルを効果的にopen()しても、残りは同じです。猫とパイプの無駄な使用と対照的です。パフォーマンスの影響は、オープンfdでよりスマートなものをより簡単な標準ストリームと比較したgrep(特にGNU grep)との関連性が高いでしょう。

+0

GNU grepに関する情報をありがとう。 – sjsam