AOT vs. JIT: impact of profile data on code quality

AOT vs. JIT: impact of profile data on code quality
复制标题

AOT 与 JIT:配置文件数据对代码质量的影响

DOI:
--
复制
发表时间:
2017
期刊:
ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems
影响因子:
--
通讯作者:
Michael R. Jantz
Michael R. Jantz
中科院分区:
--
文献类型:
--
作者:
April W. Wade;P. Kulkarni;Michael R. Jantz

文献摘要

被引文献

相似文献

程序执行期间的即时(JIT)编译和软件安装期间的提前(AOT)编译是托管语言虚拟机(VM)使用的替代技术,用于生成优化的本机代码,同时实现二进制代码的可移植性和高执行性能。JIT编译器在运行时收集的概要文件数据可以启用概要文件引导的优化(PGO),以针对不同的程序输入定制生成的本机代码。AOT编译消除了在线概要文件收集和动态编译的速度和能量开销,但可能无法达到自定义本机代码的质量和性能。这项工作的目标是调查和量化AOT编译模型对当前vm生成的本机代码质量的影响。首先,我们量化了由最先进的(HotSpot) Java VM的两种编译模型生成的本机代码的质量。其次,我们确定收集的概要数据的数量如何影响生成代码的质量。第三,我们开发了一种机制来确定给定程序运行时不同轮廓数据的准确性或相似性,并研究了轮廓数据的准确性如何影响其有效指导pgo的能力。最后,我们对VM中的概要文件数据类型进行分类,并探讨每种类型对性能的贡献。
Just-in-time (JIT) compilation during program execution and ahead-of-time (AOT) compilation during software installation are alternate techniques used by managed language virtual machines (VM) to generate optimized native code while simultaneously achieving binary code portability and high execution performance. Profile data collected by JIT compilers at run-time can enable profile-guided optimizations (PGO) to customize the generated native code to different program inputs. AOT compilation removes the speed and energy overhead of online profile collection and dynamic compilation, but may not be able to achieve the quality and performance of customized native code. The goal of this work is to investigate and quantify the implications of the AOT compilation model on the quality of the generated native code for current VMs. First, we quantify the quality of native code generated by the two compilation models for a state-of-the-art (HotSpot) Java VM. Second, we determine how the amount of profile data collected affects the quality of generated code. Third, we develop a mechanism to determine the accuracy or similarity for different profile data for a given program run, and investigate how the accuracy of profile data affects its ability to effectively guide PGOs. Finally, we categorize the profile data types in our VM and explore the contribution of each such category to performance.