
スクリプトの実行にかかる時間を測定したところ、特定のmvコマンドで-vを使用すると、速度がはるかに遅くなることがわかりました(すべての出力がファイルにリダイレクトされます)。
もしそうなら、-v
(詳細モード)コマンドの実行速度が遅くなる理由は次のとおりです。
mv file.txt newname.txt
mv -v file.txt newname.txt
何百万ものファイルをより迅速に処理したいですか?
答え1
プログラムが実行されるたびにファイルに印刷するときは、IPCを使用してカーネルと通信する必要があります。リダイレクトが必要であり、ファイルシステムは実際にバッファリングされた変更を作成する必要があります。これにより、プログラムのランタイムスケジュールが中断され、バッファリングのために比較的長い時間を待つ必要があり、実行中のすべてのタスクを実行する必要があり、ほとんどはIOロックではない可能性があります。もちろん、これは非常に一般的な現象であり、他のコマンドでは非常に異なる方法で適用されます。しかし、とにかくIOロック状態になるコマンドは、verboseフラグを使用して実行されたときにそれほど変わらないでしょう。
答え2
冗談はもっと仕事をすることを意味するからです。もっとやるのは少ないよりも時間がかかります。
答え3
Verbose呼び出しは端末で情報を処理して画面に表示し、チャネルI / Oは空間割り当てのためにバッファキャッシュを要求します。これにより、プロセス全体が遅延します。したがって、Verboseはより多くのリソースを使用するため、遅くなります。