java中整数比较的相对效率是什么?
==
>=
<=
>
<
它取决于物理架构吗?
答案 0 :(得分:4)
我怀疑有很多不同之处。如果有,编译器将表达式转换为最佳测试的可能性很大。如果其中一个参数为0,则应该没有任何区别。
如果你做的事情会产生任何差别,我想知道它是什么。
答案 1 :(得分:0)
是的,它取决于您的硬件架构和JVM:Java在实现Java虚拟机规范的虚拟机中运行,请参阅http://docs.oracle.com/javase/specs/jvms/se7/html/index.html。有各种各样的JVM都以不同的方式实现java代码(例如,列表中的那些:https://en.wikipedia.org/wiki/List_of_Java_virtual_machines)每个JVM和处理器体系结构都可以以不同方式实现您的代码,因此您的确切结果将根据它们而有所不同。
那就是说,其他答案是正确的,这些运算符在实践中应该与实际代码完全相同。其他操作(例如乘法,浮点运算和更复杂的计算)将对处理器时间产生更大的影响,因为它们不易执行。
答案 2 :(得分:0)
它们都是Java字节码中if_acmp<cond>
,if_icmp<cond>
,if<cond>
等形式的单个操作码,我无法立即回想起任何显着的硬件架构针对各种条件或不同的循环时间的不同操作码。在一两个解释器中,我构建了我保存的代码空间,只实现<
,==
和>
,并使用以下NOT
执行其他操作,但那是仅适用于玩具语言。
答案 3 :(得分:0)
大多数硬件指令集将这些比较作为两个指令进行比较,然后根据比较结果进行比较。因此,对于大多数硬件上的大多数JVM而言,它的&lt;,&lt; =,=&gt; =,&gt;完全没有区别。或!=,它设置了不同标志的两条指令。
当然,它完全取决于指令集以及JVM作者及其C编译器如何选择使用它。