为什么Java有IINC字节码指令?
已经有一个IADD字节码指令可用于完成相同的操作。

那么为什么IINC存在?

最佳答案

只有Java的原始设计者才能回答为什么他们做出特定的设计决策。但是,我们可以推测:

IINC不允许您执行ILOAD / SIPUSH / IADD / ISTORE组合无法完成的任何事情。区别在于IINC是一条指令,仅占用3或6个字节,而4条指令的序列显然更长。因此IINC会稍微减小使用它的字节码的大小。

除此之外,早期的Java版本还使用了解释器,其中每条指令在执行过程中都会产生开销。在这种情况下,使用单个IINC指令可能比等效的替代字节码序列要快。注意,JITting使得这一点变得无关紧要,但是IINC可以追溯到Java的原始版本。

09-25 22:22