スクリプトを実行する最速の方法が何であるか疑問に思います。端末にスクリプト出力を表示することとファイルにリダイレクトすること/dev/null
。
したがって、出力が重要でない場合は、少なくともスクリプトをより速く実行する最速の方法は何ですか?
bash ./myscript.sh
-or-
bash ./myscript.sh > myfile.log
-or-
bash ./myscript.sh > /dev/null
ベストアンサー1
今日の端末は以前よりも遅いです。これは主にグラフィックカードがもはや2D加速を考慮していないためです。したがって、実際に端末に印刷すると、特にスクロールが含まれている場合は、スクリプトが遅くなる可能性があります。
したがって./script.sh
、速度は遅くなりますが、後者が作業量が少ないため、./script.sh >script.log
速度が遅くなります。/script.sh >/dev/null
ただし、これが実際の目的に十分な影響を与えるかどうかは、スクリプトによって生成される出力の量と速度によって異なります。スクリプトが3行を書き込んで終了する場合、または数時間ごとに3ページを印刷する場合は、リダイレクトを処理する必要はありません。
編集する:いくつかのクイック(完全に壊れた)ベンチマーク:
Linuxコンソールで240x75:
$ time (for i in {1..100000}; do echo $i 01234567890123456789012345678901234567890123456789; done) real 3m52.053s user 0m0.617s sys 3m51.442s
260x78
xterm
:$ time (for i in {1..100000}; do echo $i 01234567890123456789012345678901234567890123456789; done) real 0m1.367s user 0m0.507s sys 0m0.104s
Samsung SSD 850 PRO 512GBディスクのファイルにリダイレクト:
$ time (for i in {1..100000}; do echo $i 01234567890123456789012345678901234567890123456789; done >file) real 0m0.532s user 0m0.464s sys 0m0.068s
次にリダイレクト
/dev/null
:$ time (for i in {1..100000}; do echo $i 01234567890123456789012345678901234567890123456789; done >/dev/null) real 0m0.448s user 0m0.432s sys 0m0.016s