March 2000 | Chandra Krintz, David Grove, Derek Lieber, Vivek Sarkar, Brad Calder
This paper presents two techniques to reduce the overhead of dynamic compilation in mobile, dynamically-linked, object-oriented programs: Lazy Compilation and Background Compilation. Lazy Compilation delays method compilation until the first invocation, reducing the number of methods compiled and overall execution time. Background Compilation uses idle cycles in multiprocessor systems to overlap compilation with application execution, further reducing total time. The authors evaluate these techniques using the Jalapeño JVM, a compile-only JVM. Lazy Compilation results in 57% fewer methods being compiled and a 14% to 26% reduction in total time compared to eager compilation. Background Compilation, which uses profile-driven optimization, delivers a 26% to 79% reduction in total time compared to eager compilation. The paper also discusses related work and future directions, including extending background compilation to multiple optimization threads and improving single-processor performance.This paper presents two techniques to reduce the overhead of dynamic compilation in mobile, dynamically-linked, object-oriented programs: Lazy Compilation and Background Compilation. Lazy Compilation delays method compilation until the first invocation, reducing the number of methods compiled and overall execution time. Background Compilation uses idle cycles in multiprocessor systems to overlap compilation with application execution, further reducing total time. The authors evaluate these techniques using the Jalapeño JVM, a compile-only JVM. Lazy Compilation results in 57% fewer methods being compiled and a 14% to 26% reduction in total time compared to eager compilation. Background Compilation, which uses profile-driven optimization, delivers a 26% to 79% reduction in total time compared to eager compilation. The paper also discusses related work and future directions, including extending background compilation to multiple optimization threads and improving single-processor performance.