我发现大型代码库中使用了很多睡眠,为了对其进行优化,我想删除所有使用的睡眠并以其他方式执行这些操作。使用sleep命令会消耗CPU周期,还是仅将进程发送到等待状态?
答案 0 :(得分:3)
在Linux中,sleep
不会消耗CPU周期,至少不会消耗很多时间。如果内核找不到更好的工作,它将花费时间在空闲过程中做一些有用的事情-如果没有任何事情要做,内核将暂时停止CPU直到发生外部事件降低功耗。
无论如何,我会说“很多sleep
”通常是不良编码的征兆-程序员如何知道在编译期间,下一个事件发生之前将花费多少时间!一个受IO约束的程序应该在大多数时间 被阻止 等待事件,而不是睡觉!如果程序是CPU绑定的,则大多数时候应该 计算 结果,而不是休眠。