次のメッセージを受け取りました。
$ time $(tee < infile > outfile)
real 0m14.721s
user 0m0.094s
sys 0m2.629s
$ time $(cat infile | tee > outfile)
real 0m8.931s
user 0m0.123s
sys 0m3.168
この違いは、リダイレクト/パイピングによるものですか、それとも別のものがありますか?
2番目に実行すると、次の結果が表示されます。
$ time $(tee < infile > outfile)
real 0m11.558
user 0m0.113s
sys 0m2.691s
$ time $(cat infile | tee > outfile)
real 0m8.822s
user 0m0.120s
sys 0m3.125s
PSinfile
とoutfile
その両方はMP4ファイルであり、RAMにキャッシュされています。
答え1
(事件によって克服された):
これらの例はタイトルと同じではありません。
タイトルの質問に。
バージョンはcat
少し遅くなります。
[編集者注:この回答の残りの部分は、スペルエラーを含む質問の以前のバージョンに基づいています。質問が編集され、次の内容は関連していません。 ]
本文の質問については
最初のコマンドは2つのファイルを書き込みます。そのため、速度が遅くなります。 2番目は追加プロセス(cat
)を開始することですが、追加ファイルを作成するよりも少し遅くなります。
読み取りがキャッシュされるため、2 番目の実行が高速化される可能性があります。
説明する
tee < infile tee > outfile
機能的には同じcat infile | tee tee > outfile
ですがtee > outfile
。最初の 2 つは 2 つのファイルを生成し、3 番目は 1 つのファイルを生成するため、速度が速くなります。