2

我最近一直在研究 JVM 字节码,我想知道是否重组性能关键代码以利用 Tload_<n> 指令(aload_0、aload_1、aload_2 等)而不是两个操作数 Tload 指令将净任何明显的性能优势?

这完全属于“您永远不需要的微优化”的类别,但将其视为学术好奇心。如果一个方法可以将其局部变量表保持在 7 个条目以下,那么可以表现出哪些性能优势(如果有)?我认为这可能只会导致字节码变得更小。

高质量链接到字节码级别优化的阅读材料的奖励积分!

4

1 回答 1

5

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

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

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

于 2013-03-15T01:28:03.263 回答