1.E+06 1.E+07 1.E+08
Figure 6. Granularity versus overhead and delay.
measurable8 with granularities below 10 000 000 bytecode instructions. Another lesson learned is that granularities of 100 000 and more exhibit rather similar levels of overhead, ranging approximately from 30% to 50%, whereas a granularity of only 10 000 results in an overhead as high as 150%.
4. Introduction to Rewriting Optimizations
In this section we present an analysis of the origin of the overheads that our rewriting scheme entails. The next two sections each present a set of targeted optimizations designed to systematically reduce these overheads.
4.1. Evaluation Methodology
The benchmarking was performed with SPEC JVM98 , a well- known general-purpose benchmark suite, which consists of the following Java programs:
− compress: a popular utility used to compress/uncompress files; − jess: a Java expert system shell; − db: a small data management program; − javac: an old Java compiler, compiling 225,000 lines of code;
8 Intervals below the resolution of the System.currentTimeMillis() function, i.e., one millisecond, are not measurable.