Although the advantages of just-in-time compilation over traditional interpretive execution are widely recognised, there needs to be more current research investigating and repositioning the performance differences between these two execution models relative to contemporary workloads. Specifically, there is a need to examine the performance differences between Java Runtime Environment (JRE) Java Virtual Machine (JVM) tiered execution and JRE JVM interpretive execution relative to modern multicore architectures and modern concurrent and parallel benchmark workloads. This article aims to fill this research gap by presenting the results of a study that compares the performance of these two execution models under load from the Renaissance Benchmark Suite. This research is relevant to anyone interested in understanding the performance differences between just-in-time compiled code and interpretive execution. It provides a contemporary assessment of the interpretive JVM core, the entry and starting point for bytecode execution, relative to just-in-time tiered execution. The study considers factors such as the JRE version, the GNU GCC version used in the JRE build toolchain, and the garbage collector algorithm specified at runtime, and their impact on the performance difference envelope between interpretive and tiered execution. Our findings indicate that tiered execution is considerably more efficient than interpretive execution, and the performance gap has increased, ranging from 4 to 37 times more efficient. On average, tiered execution is approximately 15 times more efficient than interpretive execution. Additionally, the performance differences between interpretive and tiered execution are influenced by workload category, with narrower performance differences observed for web-based workloads and more significant differences for Functional and Scala-type workloads.
翻译:尽管即时编译相较于传统解释执行的优势已得到广泛认可,但目前关于这两种执行模型在现代工作负载下性能差异的重新审视与研究仍显不足。具体而言,需要考察Java运行时环境(JRE)中Java虚拟机(JVM)的分层执行与解释执行在当代多核架构以及现代并发与并行基准测试负载下的性能差异。本文旨在填补这一研究空白,通过呈现一项研究结果,该研究比较了这两种执行模型在Renaissance基准测试套件负载下的性能表现。本研究对于任何希望理解即时编译代码与解释执行之间性能差异的人均具有参考价值。它提供了对解释型JVM核心(即字节码执行的入口与起始点)相对于即时分层执行的当代评估。研究考虑了JRE版本、JRE构建工具链中使用的GNU GCC版本、运行时指定的垃圾回收算法等因素,以及它们对解释执行与分层执行之间性能差异范围的影响。我们的研究结果表明,分层执行的效率显著高于解释执行,且性能差距有所扩大,效率提升幅度在4到37倍之间。平均而言,分层执行的效率约为解释执行的15倍。此外,解释执行与分层执行之间的性能差异受工作负载类别的影响,基于Web的工作负载中性能差异较小,而Functional和Scala类型的工作负载中差异更为显著。