如果我做:
sleep 1
相对
sleep 1 & wait $!
生成前台进程与后台进程的 CPU 使用率是否有任何差异?或者两条生产线的性能是否完全相同?
答案1
使用这两个命令,shell 将 1/ 创建一个执行 sleep 的并行子进程,2/ 告诉操作系统... 将 shell 进程暂停,直到 sleep 进程结束。然后性能相同。
答案2
是的。
在我的系统上,第一个需要 3.0 毫秒,第二个需要 3.3 毫秒 CPU 时间。
实际上,如果你睡了一整秒,我永远不会担心 0.3 毫秒的 CPU 时间。
0.3 毫秒可能是由于fork
需要放入sleep
后台的额外内容造成的。换句话说:这是一次性成本,而不是后台运行作业的 10% 额外成本。