Shell-Script
同時獲取兩個程序的執行時間
我正在嘗試製作一個 shell 腳本,它可以同時在兩個不同的程序上執行測試並比較它們的執行時間,以查看哪個效率最高(測試必須通過這個腳本自動化)
基本上,我想知道是否有一種方法可以在 shell 腳本中分叉並同時啟動我的兩個程序來檢查它們的執行時間併計算差異
@ulrichschwarz 是對的。性能測試不應並行執行這兩個程序。
您可以使用
time
which 是 shell 關鍵字。在我的 debian 機器上,PATH 中還有一個二進製文件,它有更多選項。在這種情況下,
\time
需要使用二進製版本來執行。沒有明確的fork。我的意思是當從命令行或腳本啟動程序時,shell 會為你做所有事情。
&
當在命令行末尾添加時,shell 在後台啟動一個程序:例如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