Abstract
This paper studies the use of bytecode instruction counting (BIC) to estimate the CPU load due to the execution of Java programs in different environments. BIC is the basis of the J-RAF2 framework to monitor and control the resource consumption of Java code, and, more recently, is also used in another tool to profile Java code. The advantage of BIC resides in its complete portability, from mainframes to embedded devices, and in the reproducibility of the reported bytecode counts. However, BIC and CPU time are not strictly equivalent units of measurement, therefore we need to study the relationships which exist between them. This paper shows, based on the SPEC JVM98 and SPEC JBB2000 benchmarks, that for each platform there exists a stable, application-specific ratio of bytecodes per unit of CPU time that can be used for translating a BIC value into the corresponding CPU load. Possible extensions of this property are also discussed.