March 2000 | Chandra Krintz, David Grove, Derek Lieber, Vivek Sarkar, Brad Calder
This paper presents two dynamic compilation techniques to reduce the overhead of dynamic compilation in Java programs: lazy compilation and background compilation. Lazy compilation compiles methods only when they are first invoked, reducing the number of methods compiled and the total execution time compared to eager compilation. Background compilation overlaps compilation with execution by using idle cycles in multiprocessor systems to compile methods that are predicted to be important for performance. These techniques enable high performance execution while minimizing the impact of compilation overhead. The Jalapeño JVM, a new JVM developed at IBM T. J. Watson Research Center, is used to evaluate these techniques. The results show that lazy compilation reduces the number of methods compiled by 57% and total execution time by 14% to 26% compared to eager compilation. Background compilation further reduces total execution time by 26% to 79% compared to eager compilation. The paper also discusses the impact of dynamic linking on execution time and how lazy compilation reduces the overhead of dynamic linking. The results demonstrate that background compilation effectively reduces total execution time by masking compilation overhead, achieving execution times of optimized code with the overhead of baseline compilation. The paper concludes that these techniques significantly reduce the overhead of dynamic compilation while maintaining high performance.This paper presents two dynamic compilation techniques to reduce the overhead of dynamic compilation in Java programs: lazy compilation and background compilation. Lazy compilation compiles methods only when they are first invoked, reducing the number of methods compiled and the total execution time compared to eager compilation. Background compilation overlaps compilation with execution by using idle cycles in multiprocessor systems to compile methods that are predicted to be important for performance. These techniques enable high performance execution while minimizing the impact of compilation overhead. The Jalapeño JVM, a new JVM developed at IBM T. J. Watson Research Center, is used to evaluate these techniques. The results show that lazy compilation reduces the number of methods compiled by 57% and total execution time by 14% to 26% compared to eager compilation. Background compilation further reduces total execution time by 26% to 79% compared to eager compilation. The paper also discusses the impact of dynamic linking on execution time and how lazy compilation reduces the overhead of dynamic linking. The results demonstrate that background compilation effectively reduces total execution time by masking compilation overhead, achieving execution times of optimized code with the overhead of baseline compilation. The paper concludes that these techniques significantly reduce the overhead of dynamic compilation while maintaining high performance.