Performance measurement of interpreted, just-in-time compiled, and dynamically compiled executions

Tia Newhall, Barton P. Miller · 1999

With the increasing popularity of Java, interpreted, just-in-time (JIT) compiled and dynamically compiled executions are becoming a common way for application programs to be executed. As a result, performance profiling tools for these types of executions are in greater demand by program developers. In this thesis, we present techniques for measuring and representing performance data from interpreted, just-in-time and dynamically compiled program executions. Our techniques solve problems related to the unique characteristics of these executions that make performance measurement difficult, namely that there is an interdependence between the interpreter virtual machine program and the application program, and that application program code is transformed at run-time by just-in-time and dynamic compilers. Our solution is a representational model for describing performance data that allows for a concrete description of behaviors in interpreted, JIT compiled and dynamically compiled executions. The model is a reference point for what to implement in performance tools that measure these types of executions. An implementation of our model can answer performance questions about specific interactions between the virtual machine and the application program, and it can represent performance data in a language that both an application program developer and a virtual machine developer can understand. The model describes performance data in terms of the different forms of an application program object, describes run-time transformational costs associated with dynamically compiled application code, and correlates performance data collected for one form of an application code object with other forms of the same object. To demonstrate our ideas, we implemented a performance tool (Paradyn-J) for interpreted and dynamically compiled Java executions that is based on our model. In two performance tuning studies, we show that performance data that can be easily represented by Paradyn-J provides information that is critical to understanding the performance of an all-interpreted and a dynamically compiled Java execution. With these data we were easily able to determine how to tune the all-interpreted application to improve its performance by a factor of 1.7, and how to tune the performance of a dynamically compiled method to improve its performance by 10%.

Read the paper · More papers on PaperTik