微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

三元运算符的效率不如为变量设置不同值的if语句

如何解决三元运算符的效率不如为变量设置不同值的if语句

示例1:

a = a > b ? b : a

示例2:

if (a > b)
    a = b

虽然差异可能不大,但我认为示例2的计算效率更高,如示例1所示,如果a

另一方面,我想也许是编译器理解了这一点,并且两个语句在编译后都具有相同的效率,因为它们对应于相同的指令?

解决方法

在您的情况下,您的 ternary 运算和您的 if 语句是不相同的,因为之后没有 else 语句 if ,因此它仅检查是否a>b

如果您对在语义上相等的三元运算 if-else 块的情况下的性能差异问题感兴趣,那么答案为 ,差别不大。三元运算符只是if-else编写的语法糖。

这是最简单的Java程序中的字节码比较,只有一种(入口点)主要方法,在第一种情况下,我实现了三元运算符,并且在第二个- 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
}

//Second Example,having if-else alternative
  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     14
       9: iload_2
      10: istore_1
      11: goto          16
      14: iload_1
      15: istore_1
      16: return
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。