为了了解更多关于 CPU 和代码优化的信息,我开始学习汇编编程。我还阅读了有关 CPU 为加速自身而进行的“分支预测”之类的巧妙优化。
我的问题可能看起来很愚蠢,因为我还不太了解这个主题。
我有一个非常模糊的记忆,我在某处(在互联网上)读到过这些goto
语句会降低程序的性能,因为它不适用于 CPU 中的分支预测。然而,这可能只是我编造的东西,并没有真正阅读过。
我认为这可能是真的。
我希望这个例子(在伪 C 中)能澄清我为什么这么认为:
int function(...) {
VARIABLES DECLARED HERE
if (HERE IS A TEST) {
CODE HERE ...
} else if (ANOTHER TEST) {
CODE HERE ...
} else {
/*
Let us assume that the CPU was smart and predicted this path.
What about the jump to `label`?
Is it possible for the CPU to "pre-fetch" the instructions over there?
*/
goto label;
}
CODE HERE...
label:
CODE HERE...
}
对我来说,这似乎是一项非常复杂的任务。这是因为 CPU 需要查找goto
跳转到的位置,以便能够预取那里的指令。
你知道吗?