我最近拿起了 Michael Abrash 的The Zen of Assembly Language(从 1990 年开始),并且正在阅读关于指令预取如何并不总是有利的部分,例如发生分支(跳转)的情况。这是因为所有预取的指令都不再是要执行的指令,因此必须取更多的指令。
这让我想起了另一本旧书Andre LaMothe 的Tricks of the Game Programming Gurus中的优化,其中他建议在设置条件语句时,将最频繁(或预期)的路径放在首位。
例如:
if (booleanThatIsMostLikelyToBeTrue)
{
// ...expected code
// also the code that would've been prefetched
}
else
{
// ...exceptional or less likely code
}
我的问题是:
1) LaMothe 的优化是否考虑到这一点?(我已经没有书了)
2)这种类型的优化在现代机器上仍然是一个值得的编程习惯吗?(也许预取的处理方式与以前不同?)