スクリプトを実行する最速の方法は何ですか?

スクリプトを実行する最速の方法は何ですか?

スクリプトを実行する最速の方法が何であるか疑問に思います。端末にスクリプト出力を表示することとファイルにリダイレクトすること/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
    

おすすめ記事