私は桂佐藤の答えに本能的に同意したでしょう。それは理にかなっている。ただし、テストするのは簡単です。
100万行の画面への書き込み、ファイルへの書き込み(追加)、およびへのリダイレクトをテストしました/dev/null
。これらを順番にテストしてから、5回繰り返しました。これらは私が使用したコマンドです。
$ time (for i in {1..1000000}; do echo foo; done)
$ time (for i in {1..1000000}; do echo foo; done > /tmp/file.log)
$ time (for i in {1..1000000}; do echo foo; done > /dev/null)
次に、以下の合計時間をプロットしました。

ご覧のとおり、桂佐藤の推測は正しかった。桂佐藤の回答によると、制限要因が出力になることも疑わしいため、出力の選択がスクリプトの全体的な速度に大きな影響を与える可能性は低いです。
FWIW、私の最初の答えには異なるコードがあり、ループ内にファイルを追加して/dev/null
リダイレクトしていました。
$ rm /tmp/file.log; touch /tmp/file.log; time (for i in {1..1000000}; do echo foo >> /tmp/file.log; done)
$ time (for i in {1..1000000}; do echo foo > /dev/null; done)
ジョン・クーゲルマンがコメントで指摘しているように、これは多くのオーバーヘッドを追加します。質問が立つように、これは実際にそれをテストするための正しい方法ではありませんが、それははっきりから繰り返し再開いたファイルのコストを示しているように私はそれをここに残しておきます内のスクリプト自体。

この場合、結果は逆になります。