if-else 与 三目 的效率比较

简单说一下 if-else 和 三目 的效率 (常数优化)
先放结论:
1.多用三目,少用if-else
2.如果用if,把概率大的放前面

下面是原理:
程序运行时,处理器会通过并行运算而加速运行,当遇到选择支时则会停下判断 (例如高速行驶的大卡车遇到了分岔路)
if-else 是先赋值再运算,为了节省时间,分支预测会先猜测运行 if 还是 else 并继续运行 (默认是if),若猜对则因并行运算而节省时间,若猜错则因消除运算而耗费时间。 (卡车直接冲向一边康康可不可以走通,如果可以则继续走,如果不可以则回头走另一条路)(成本是回到分岔处的时间)
三目 是先运算再赋值,遇到选择支时停止并行并判断条件。(在分岔处停下康地图) (成本是重新加速需要的时间)
在多数情况下,运算结果为0与为1的可能相近,分支预测&并行运算 会比三目耗费更多的时间,所以应更多的使用三目。
在一些情况下,运算结果大多为0或大多为1(80+%),这时 分支预测&并行运算 的损耗远小于三目,所以应选择 if-else

关于分支预测,可以参考这些文章:1.https://blog.csdn.net/rrrfff/article/details/44993467 2.http://www.cnblogs.com/yangecnu/p/introduce-branch-predict-pipelining-and-conditonal-move-instruction.html

你可能感兴趣的:(if-else 与 三目 的效率比较)