AOT Vs. JIT: Impact of Profile Data on Code Quality
Perry Alexander
Heechul Yun
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.
JIT compilers typically collect profile information at run-time to
enable profile-guided optimizations (PGO) to customize the gener-
ated native code to different program inputs/behaviors. AOT com-
pilation 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 af-
fects the quality of generated code. Third, we develop a mechanism
to determine the accuracy or similarity of 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.