“通常为了减少时间损失,采用猜测法,即当条件转移指令从取指阶段进入执行阶段时,指令部件仍按顺序预取下一条指令。这样,如果条件不成立,转移没有发生,则没有时间损失;若条件成立,转移发生,则所取的指令必须丢掉,并再取新的指令”
上面是CPU硬件层面的行为。那么这是否能表明在高级语言如c或java里将最可能发生的事件放在if语句块里而非else语句块里是更高效的
“通常为了减少时间损失,采用猜测法,即当条件转移指令从取指阶段进入执行阶段时,指令部件仍按顺序预取下一条指令。这样,如果条件不成立,转移没有发生,则没有时间损失;若条件成立,转移发生,则所取的指令必须丢掉,并再取新的指令”
上面是CPU硬件层面的行为。那么这是否能表明在高级语言如c或java里将最可能发生的事件放在if语句块里而非else语句块里是更高效的
我觉得你可能说的只是一种比较简单的情况,确实存在,但计算机系统结构怎么讲呢比较复杂,现代CPU也比较复杂,架构来说就不太一样,细节就更难以捉摸
你说的在C++20中有[[likely]]
和[[unlikely]]
属性,C++ attribute: likely, unlikely (since C++20) - cppreference.com