提问人:KGM 提问时间:7/10/2020 最后编辑:KGM 更新时间:7/10/2020 访问量:178
如何避免大部分未采用的条件分支?
How to avoid mostly untaken conditional branches?
问:
请考虑以下情况:
你有一个宏在整个代码中经常做一些事情。(例如,一些异常处理)
这个宏通常很少做,但会定期出现某些情况,使得宏必须做更多......
这可以很容易地实现,使用条件分支来选择是需要复杂代码还是简单代码,如果需要复杂代码,则使用分支......但这可能会导致以下严重的性能问题:
- 许多现代分支预测器对多个分支使用相同的预测结构,因此从其他分支收集的数据会影响每个分支的预测!因此,大多数时间未采用的压倒性分支计数可能会“混淆”分支预测器,从而对其他分支做出可怕的预测!
我怎样才能解决这个问题?
请注意,因为复杂的代码很少被调用,所以在这种情况下我真的不在乎效率!
(研究的起点可能是:像 java 这样的语言如何解决这个问题?
答: 暂无答案
评论
n
nop
cmp
jcc