单个"if"语句在紧密循环中有多大影响(时间)?

Ste*_*ich 4 c++ loops if-statement

我正在使用C++开发一个应用程序,它使用紧密循环来迭代FSM中的状态.现在,由于紧凑的循环,它使用100%的CPU,我们的客户不喜欢这样.我想尝试sleep(1)在紧密的循环中放松它,但是我们担心这会让我们的大客户(状态变化非常快!)在状态之间睡得太久.我在考虑尝试这样的事情:

if(smallcustomer)
{
    sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

并且smallcustomer会在程序启动时在其他地方定义.这种"如果"的陈述是否会像睡眠那样减慢速度,并且打败自己的目的?

Kar*_*ldt 7

你的意思是FSM实际上不应该需要 100%的CPU,这导致我假设你花了很多时间什么都不做,除了检查你是否需要移动到下一个状态.你说你担心大客户"睡得太久",这意味着你担心会遗漏一些事件:队列填充,鼠标点击,收到数据包,完成磁盘I/O,关键是不管怎么说.您应该重构以在该事件(或事件)上异步触发,而不是占用CPU在循环中不执行任何操作.