我很抱歉......(过早)优化是所有邪恶的根源,但我想知道:拥有jmp
指令而不是拥有它的成本要高得多(无网点)码)?我正在学习如何计算这些东西的方法。这纯粹是探索性的,不实用的,我试图找到理论问题的方法,我的测试代码提出了这个问题。感谢。
答案 0 :(得分:8)
如果你真的想知道,你必须在你的架构上进行测试。
但总的来说,在现代处理器上,无条件跳转的成本最低。除了极少量的指令缓存开销外,它基本上是免费的。它可能会与相邻指令并行执行,因此甚至可能不会花费您一个时钟周期。这是因为跳转可以通过几个并行execution units之一执行。
以这种方式看待 - 主内存的单次读取可能要贵100-200倍。
它更普遍是branch prediction的子集,但不存在分支错误预测的风险,因此您不必清除instruction pipeline,这是与条件跳转相关的主要成本。
答案 1 :(得分:1)
嗯,最好不要跳。在早期,条件跳转被写入,以便最可能的条件不会导致跳跃。所以根本不需要任何指令显然更快,但我不能告诉你它与其他指令相比有多昂贵。也许你应该以这种或那种方式测量十亿次跳跃......