JVM字节码指令Tload_ <n> vs Tload

Ron*_*ren 2 java optimization jvm bytecode

我最近一直在讨论JVM字节码,我想知道是否重构性能关键代码以利用Tload_ <n>指令(aload_0,aload_1,aload_2等)而不是两个操作数Tload指令会网任何可观的性能优势?

这完全属于"您永远不需要的微观优化"类别,但认为它是学术上的好奇心.如果一个方法可以将其局部变量表保存在7个条目下,那么性能优势(如果有的话)可以表现出来吗?我认为这可能只会导致字节码变得越来越小.

关于字节码级优化的阅读材料的质量链接的奖励点!

Hot*_*cks 5

短载荷主要是因为Java字节码的最初目的.最初该语言是为机顶盒设计的,并且尽可能紧凑,因此,为了节省RAM/ROM,使用常用指令的特殊短版本被认为是值得的.

在解释器中,还有一个微小的性能优势,因为解释器例程可以使用内置的必要偏移量进行单独编码.

但是,在JITCed代码中没有区别 - 所有的操作都会折叠成相同的逻辑,这可能会利用短机器指令来实现短的偏移,但不会与短字节码在同一边界.