什么是三元运营商的性能成本

时间:2016-01-04 21:00:45

标签: performance cpu pipeline ternary

我听说编译器非常聪明,并且知道如何优化if / else语句。

我也听说过三元性能很高,因为它们很少通过CPU的指令管道。

让我根据我所听到的内容澄清:

if / else必须通过管道传递其条件并等待结果才能执行结果计算。

然而,三元组可以通过两个结果'计算到cpu而不必等待布尔表达式通过管道。

那么,哪个更快,三元组还是if / else?

1 个答案:

答案 0 :(得分:4)

没有性能差异,三元运算符只是一个语法糖。

来自ISO / IEC 9899 C标准(draft, page 90):

  

6.5.15条件运算符

     

(...)

     

<强>语义

     

评估第一个操作数;它之后有一个序列点   评价。仅在第一个操作数进行比较时才评估第二个操作数   不等于0;第三个操作数仅在第一个操作数时进行评估   比较等于0;结果是第二个或第三个的值   操作数(以评估者为准),转换为所描述的类型   下面。 (...)