Many instructors use program runtimes to illustrate and reinforce algorithm complexity concepts. Hardware, operating system and compilers have historically influenced runtime results, but generally not to the extent of making the data difficult to interpret. The Java virtual machine adds an additional layer of software, making it much harder to obtain easy to interpret results. This paper presents some of the basic issues the author and his students have encountered when analyzing Java program runtimes and briefly discusses strategies to address them. Categories and Subject Descriptors C.4 [Performance of Systems]: Measurement Techniques, Performance General Terms Algorithms, Performance, Experimentation. Keywords Java virtual machine, Program runtime, Garbage Collection,
Stuart A. Hansen