Mag*_*don 3 cpu performance pipeline ternary
我听说编译器非常聪明并且知道如何优化 if / else 语句。
我也听说过三进制是高性能的,因为它们通过 CPU 的指令管道更少。
根据我所听到的,让我澄清一下:
if / else 必须通过管道传递其条件并等待结果,然后才能执行结果计算。
然而,三元可以将结果的计算传递给 cpu,而无需等待布尔表达式通过管道。
那么,哪个更快,三元组还是 if / else ?
不会有性能差异,三元运算符只是一个语法糖。
来自 ISO/IEC 9899 C 标准(草案,第 90 页):
6.5.15 条件运算符
(……)
语义
评估第一个操作数;评估后有一个序列点。仅当第一个操作数不等于 0 时才计算第二个操作数;仅当第一个操作数等于 0 时才计算第三个操作数;结果是第二个或第三个操作数(以求值者为准)的值,转换为下面描述的类型。(……)