为什么Java有IINC
字节码指令?
已经有一个IADD
字节码指令可用于完成相同的操作。
那么为什么IINC
存在?
最佳答案
只有Java的原始设计者才能回答为什么他们做出特定的设计决策。但是,我们可以推测:IINC
不允许您执行ILOAD
/ SIPUSH
/ IADD
/ ISTORE
组合无法完成的任何事情。区别在于IINC
是一条指令,仅占用3或6个字节,而4条指令的序列显然更长。因此IINC
会稍微减小使用它的字节码的大小。
除此之外,早期的Java版本还使用了解释器,其中每条指令在执行过程中都会产生开销。在这种情况下,使用单个IINC
指令可能比等效的替代字节码序列要快。注意,JITting使得这一点变得无关紧要,但是IINC
可以追溯到Java的原始版本。