在脚本中使用 sleep 会消耗 CPU 周期吗?

Say*_*nan 2 c linux bash shell sh

我发现在大型代码库中使用了大量睡眠,为了优化它,我想删除所有使用的睡眠并以替代方式执行这些操作。使用 sleep 命令会消耗 CPU 周期,还是仅将进程发送到等待状态?

Ant*_*ala 5

在 Linuxsleep中不消耗 CPU 周期,至少不会超过不休眠。如果内核找不到更好的事情要做,它将利用时间在空闲进程中做一些有用的事情 - 如果没有任何事情可做,内核将暂时停止 CPU,直到发生外部事件以降低功耗。

在任何情况下,我都会说“很多sleep”通常糟糕编码的症状 - 程序员如何在执行之前知道在下一个事件发生之前将花费多少时间!一个 IO 绑定的程序应该在大部分时间被阻塞等待事件,而不是睡眠!如果程序受 CPU 限制,那么它应该大部分时间都在计算结果,而不是休眠。