【发布时间】:2012-12-24 07:23:08
【问题描述】:
指针间接(获取值)是否比条件更昂贵?
我观察到大多数体面的编译器可以在不同程度上预先计算指针间接 - 可能会删除大多数分支指令 - 但我感兴趣的是间接成本是否大于分支成本指向生成的代码。
我希望如果指针引用的数据在运行时不在缓存中,则可能会发生缓存刷新,但我没有任何数据支持。
是否有人对此事有可靠的数据(或合理的意见)?
编辑: 几位发帖人指出,没有关于分支成本的“一般情况”:它因芯片而异。
如果您碰巧知道一个值得注意的案例,即分支会比缓存内间接更便宜(有或没有分支预测),请提及。
【问题讨论】:
-
回答您在 PowerPC 上的编辑,正确预测的分支可以是零周期。它实际上比负载成本更低。
标签: c performance pointers conditional