Reducing the Overhead of Compilation Delay
Chandra Krintz, David Grove, Derek Lieber, Vivek Sarkar, Brad Calder
Abstract
Open-access reader
Chandra Krintz, David Grove, Derek Lieber, Vivek Sarkar, Brad Calder
Abstract
Open-access reader
The execution model for mobile dynamically-linked object--oriented\nprograms has evolved from fast interpretation to a mix of interpreted and\ndynamically compiled execution. The primary motivation for dynamic compilation\nis that compiled code executes significantly faster than interpreted code.\nHowever, since dynamic compilation is performed while the application is\nrunning, the biggest challenge in using dynamic compilation is to reduce its\noverhead so as not to mitigate the runtime improvement that it delivers.\nTechniques for reducing dynamic compilation overhead can be classified as (1)\ndecreasing the amount of compilation performed, or (2) overlapping compilation\nwith useful work. In this paper, we first evaluate the effectiveness of Lazy\nCompilation as a technique for decreasing the amount of compilation performed.\nIn lazy compilation, individual methods are compiled on demand (when called),\nthus avoiding the load-time delay of compiling all methods when a new\nclass/module is loaded. Our experimental results (obtained by executing the\nspecJVM Java programs on the Jalapeno JVM) show that lazy compilation results\nin compilation of 57% to 63% fewer methods, and a reduction in compilation time\nof approximately 30%, when compared to load-time compilation. Next, we present\nProfile-driven Background Compilation as a new technique for overlapping\ncompilation with execution. The motivation for background compilation is to\nuse idle cycles in multiprocessor systems to overlap compilation with\napplication execution. Profile information is used to prioritize methods as\ncandidates for background compilation. Our results show that background\ncompilation can deliver significant reductions (26% to 79%) in total time i.e.,\ncompilation plus execution time, compared to serial (non-background)Pre-2018 CSE ID: CS2000-0648
OpenAlex reports 2 citations for this work. Citation counts describe recorded attention and do not establish research quality.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
The execution model for mobile dynamically-linked object--oriented\nprograms has evolved from fast interpretation to a mix of interpreted and\ndynamically compiled execution. The primary motivation for dynamic compilation\nis that compiled code executes significantly faster than interpreted code.\nHowever, since dynamic compilation is performed while the application is\nrunning, the biggest challenge in using dynamic compilation is to reduce its\noverhead so as not to mitigate the runtime improvement that it delivers.\nTechniques for reducing dynamic compilation overhead can be classified as (1)\ndecreasing the amount of compilation performed, or (2) overlapping compilation\nwith useful work. In this paper, we first evaluate the effectiveness of Lazy\nCompilation as a technique for decreasing the amount of compilation performed.\nIn lazy compilation, individual methods are compiled on demand (when called),\nthus avoiding the load-time delay of compiling all methods when a new\nclass/module is loaded. Our experimental results (obtained by executing the\nspecJVM Java programs on the Jalapeno JVM) show that lazy compilation results\nin compilation of 57% to 63% fewer methods, and a reduction in compilation time\nof approximately 30%, when compared to load-time compilation. Next, we present\nProfile-driven Background Compilation as a new technique for overlapping\ncompilation with execution. The motivation for background compilation is to\nuse idle cycles in multiprocessor systems to overlap compilation with\napplication execution. Profile information is used to prioritize methods as\ncandidates for background compilation. Our results show that background\ncompilation can deliver significant reductions (26% to 79%) in total time i.e.,\ncompilation plus execution time, compared to serial (non-background)Pre-2018 CSE ID: CS2000-0648
Key concepts: Computer science, Dynamic compilation, Just-in-time compilation, Overhead (engineering), Programming language, Parallel computing, Code (set theory), Java