私は2つの異なるプログラムで同時にテストを実行できるシェルスクリプトを作成し、どのプログラムが最も効率的であるかを確認するために実行時間を比較したいと思います(テストはこのスクリプトで自動化する必要があります)。
基本的に、シェルスクリプトをフォークし、両方のプログラムを同時に実行して実行時間を確認し、違いを計算する方法があるかどうかを知りたいです。
答え1
@ulrichschwarz そうですね。パフォーマンステストは両方のプロセスを並列に実行しないでください。
----
time
シェルキーワードwhichを使用できます。
私のDebianボックスには、パスにさらに多くのオプションがあるバイナリもあります。この場合、\time
バイナリバージョンを使用して実行する必要があります。
はっきりしないクロス。私は、コマンドラインまたはスクリプトでプログラムが起動すると、シェルがすべての操作を実行することを意味します。
&
コマンドラインの最後に追加すると、シェルはバックグラウンドでプログラムを起動します。sleep 6 &
バックグラウンドで2つのプログラムを起動すると同時に実行されます。
wait
シェルが組み込まれています。引数なしで使用すると、現在のプロセスは、現在アクティブなサブプロセス(バックグラウンド)が終了するのを待って中断されます。
この試み:
realtime1=$(mktemp)
realtime2=$(mktemp)
\time -o "${realtime1}" -f "%e" sleep 5 &
\time -o "${realtime2}" -f "%e" sleep 10 &
wait
printf "Number of seconds used by program1: %s\n" $(cat "${realtime1}")
printf "Number of seconds used by program2: %s\n" $(cat "${realtime2}")
テストを受ける:
$ bash script.sh
Number of seconds used by program1: 5.00
Number of seconds used by program2: 10.00