我正在尝试制作一个 shell 脚本,它可以同时在两个不同的程序上运行测试并比较它们的运行时间,以便查看哪个程序具有最佳效率(测试必须通过此脚本自动化)
基本上,我想知道是否有一种方法可以分叉 shell 脚本并同时启动我的两个程序来检查它们的运行时间并计算差异
答案1
@ulrichschwarz 是对的。性能测试不应并行运行两个进程。
----
您可以使用time
shell 关键字which。
在我的 debian 盒子上,路径中还有一个二进制文件,它有更多选项。在这种情况下,\time
需要使用二进制版本来运行。
没有明确的叉。我的意思是,当程序从命令行或脚本启动时,shell 会为您做所有事情。
&
当在命令行末尾添加时,shell 在后台启动程序:例如sleep 6 &
如果在后台启动 2 个程序,则它们会同时运行。
wait
是一个 shell 内置的。当不带参数使用时,当前进程将挂起以等待当前活动子进程(在后台)终止。
尝试一下这个:
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