关于c ++:switch语句或if语句的资源成本是否较低?


Does a switch statement or an if statement cost less in resource?

本问题已经有最佳答案,请猛点这里访问。

我正在研究C++中的2D引擎,并且我知道EDCOX1×0的语句在CPU使用方面比EDCOX1×1的语句少,但是,EDCOX1×1的语句和EDCOX1×0的语句之间的差异与现代PC甚至移动移植是可以忽略不计的,还是必须不惜代价避免EDCOX1×1?


乐观主义者在过去几十年里取得了长足进步。通常情况下,不需要猜测这些东西中的哪一个会产生影响——只需编写尽可能干净、可理解和可维护的代码,然后运行一个分析器来获得有意义的反馈,以指导优化。

这就是说,如果你觉得你必须猜这个-这里有一些一般性的建议…

如果您有一个条件,那么只需使用if/else(或适用的?:对)。

如果您有多个条件,并且希望控制它们被测试的顺序,因为您具有让您将最可能的分支放在顶部的洞察力,那么可以使用if/〔else,或者—更好—在重新编译时运行一个探查器并将分支预测信息反馈给优化程序。

如果有很多值要测试同一表达式,请使用switch—编译器更可能创建某种调度表或二进制分支树,这样可以执行长而平的if/else if/。链。