如何解决三元运算符的效率不如为变量设置不同值的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 举报,一经查实,本站将立刻删除。