-2 c++
我正在使用c ++编写一个2D引擎,我知道一个if语句在CPU使用率方面的成本低于switch语句; 但是,switch声明和if声明之间的区别是现代PC甚至是移动端口可忽略不计,还是我必须switch不惜一切代价避免?
在过去的几十年中,优化器已经走过了漫长的道路.通常不值得猜测这些事情中哪些会产生影响 - 只需编写尽可能干净,易懂和可维护的代码,然后运行分析器以获得有意义的反馈以指导优化.
那就是说,如果你觉得你必须猜测 - 这里有一些一般的建议......
如果您有一个条件,那么只需使用if/ else(或? :适用的一对).
如果你有多个条件,并希望控制它们的测试顺序,因为你有洞察力可以让你把最可能的分支放在顶部,那么用if/ [ else],或者 - 更好 - 运行一个分析器和在重新编译时将分支预测信息反馈给优化器.
如果你有很多值来测试相同的表达式,那么使用a switch- 编译器更可能创建某种调度表或二进制分支树,它应该超出一个长的扁平if/ else if/ ...链.