【发布时间】:2010-09-23 20:07:48
【问题描述】:
我这辈子都不记得我们老师那天到底说了什么,我希望你可能知道。
模块是“数据结构和算法”,他告诉我们一些类似的东西:
if语句是最昂贵的 [某物]。 [某事]注册 [某事]。
是的,我的记忆力确实很糟糕,我真的很抱歉,但我已经搜索了几个小时,但没有任何结果。有什么想法吗?
【问题讨论】:
-
问你的老师有选择吗?
-
你为什么不给你的老师发邮件? SO 上的任何人都不太可能知道您的老师说了什么,除非他们当时在场(或者您的老师本人也读过 SO)。
-
当然还有一个链接到必填railroad answer
-
If 语句,尤其是受 C 语言影响的花括号语言中的“? :”表达式,可以通过 x86 和 arm 处理器等特殊条件执行指令来实现。这些是基于先前测试执行或不执行某些操作的指令。使用这些出色的指令完全避免了条件跳转/分支/“转到”指令的需要。在某些情况下,通过使程序流程完全可预测,从而在某些情况下实现巨大的性能提升,因为它只是直接向前推进,没有(可能不可预测)跳转到代码中的不同点。
-
一个好的编译器有时可能需要在正确的方向上进行一些推动,以便它使用条件指令而不是愚蠢和使用条件跳转,方法是重新组织代码并可能在表达式中使用聪明的算术还是一个? : 表达。除非你真的了解你的 asm 并且阅读过 Agner Fog 的优化指南,否则不要玩这个。编译器有时会正确处理 if 语句或 ? : 使用表达式。
标签: if-statement language-agnostic branch-prediction