为什么算术赋值运算符更有效?

时间:2013-11-13 15:02:10

标签: java performance operators shorthand

简写Java算术运算符的示例是a += 4;的{​​{1}}

在完整的参考资料中,Java 2,Herbert Schildt提到“Java运行时系统实现的效率比它们的等效系统更高效”

使其实施比a=a+4;

更有效的原因

4 个答案:

答案 0 :(得分:6)

只有微基准测试可以在任何给定的执行环境中确认或拒绝作者的声明。

在现代JVM上,两个版本更有可能表现出相同的性能。

P.S。如果书名中的“2”与“Java 2”中的“2”一样,我强烈建议您获取更新的书籍!

答案 1 :(得分:4)

对于a += 4 javac,可以生成IIC指令,通过常量递增局部变量。理论上 IADD更有效率。

IADD执行添加int ,从堆栈中弹出两个值,然后推回结果。 IIC在堆栈上不执行任何操作,但会增加局部变量。

因此,如果您可以使用非常有限且原始的JVM,就像您在Java Card上找到的那样,这可能很重要,但在%99.9的情景中却没有。 Java,JVM和大多数其他虚拟机都有很长的路要走。

顺便说一下这本书的版本,你用的是什么? Amazon提到它将在2014年推出第9版。如果该行仍在书中,我会感到惊讶。

答案 2 :(得分:1)

与一元增量运算符(++)一样,两个版本的性能相同,因为从它们生成相同的字节码(至少使用Eclipse JDT)。

答案 3 :(得分:0)

a + = 4 :它提供隐式类型转换。 例如,考虑一个+ = 4.4,它会自动转换为4.4到4。 但 a = a + 4.4 会给你施法错误。