Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 三元运算符的效率是否低于为变量设置不同值的if语句_If Statement_Conditional Operator - Fatal编程技术网

If statement 三元运算符的效率是否低于为变量设置不同值的if语句

If statement 三元运算符的效率是否低于为变量设置不同值的if语句,if-statement,conditional-operator,If Statement,Conditional Operator,例1: a = a > b ? b : a 例2: if (a > b) a = b 虽然差异可能不大,但我认为示例2的计算效率更高,如示例1中所示,如果ab 如果您对语义相等的三值运算和If-else块的性能差异感兴趣,那么答案是否,差别不大。三元运算符只是书写if-else的一种语法糖 这里是最简单的Java程序中的字节码比较,只有一个(入口点)main方法,在第一种情况下我实现了三元运算符,在第二种情况下实现了one-if-else语句 //First examp

例1:

a = a > b ? b : a
例2:

if (a > b)
    a = b
虽然差异可能不大,但我认为示例2的计算效率更高,如示例1中所示,如果a
 //First example, having Ternary Operator
  public static void main(java.lang.String[]);
    Code:
       0: iconst_0
       1: istore_1
       2: iconst_1
       3: istore_2
       4: iload_1
       5: iload_2
       6: if_icmple     13
       9: iload_2
      10: goto          14
      13: iload_1
      14: istore_1
      15: return
}
另一方面,我认为编译器可能理解这一点,并且这两个语句在编译后工作效率相同,因为它们对应于相同的指令?

在您的例子中,您的三元运算和if语句不相同,因为if之后没有else语句,所以它只检查
a>b

如果您对语义相等的三值运算和If-else块的性能差异感兴趣,那么答案是,差别不大。三元运算符只是书写if-else的一种语法糖

这里是最简单的Java程序中的字节码比较,只有一个(入口点)main方法,在第一种情况下我实现了三元运算符,在第二种情况下实现了one-if-else语句

 //First example, having Ternary Operator
  public static void main(java.lang.String[]);
    Code:
       0: iconst_0
       1: istore_1
       2: iconst_1
       3: istore_2
       4: iload_1
       5: iload_2
       6: if_icmple     13
       9: iload_2
      10: goto          14
      13: iload_1
      14: istore_1
      15: return
}


如果您确实想确定,您可以随时检查编译器输出。虽然老实说,我没有看到第一个版本有什么真正的优势,但保存一行代码是非常重要的insignificant@UnholySheep我只是好奇它是如何工作的!我肯定只会在我的代码中使用可读性更好的东西。