Research Article
Platform-independent profiling in a virtual execution environment
Article first published online: 11 SEP 2008
DOI: 10.1002/spe.890
Copyright © 2008 John Wiley & Sons, Ltd.
Additional Information
How to Cite
Binder, W., Hulaas, J., Moret, P. and Villazón, A. (2009), Platform-independent profiling in a virtual execution environment. Software: Practice and Experience, 39: 47–79. doi: 10.1002/spe.890
Publication History
- Issue published online: 26 NOV 2008
- Article first published online: 11 SEP 2008
- Manuscript Accepted: 16 MAY 2008
- Manuscript Revised: 13 MAY 2008
- Manuscript Received: 17 MAY 2006
Funded by
- Marie Curie Fellowship
- Swiss National Science Foundation
- Abstract
- References
- Cited By
Keywords:
- Java;
- JVM;
- profiling;
- program transformations;
- bytecode instrumentation;
- dynamic metrics
Abstract
Virtual execution environments, such as the Java virtual machine, promote platform-independent software development. However, when it comes to analyzing algorithm complexity and performance bottlenecks, available tools focus on platform-specific metrics, such as the CPU time consumption on a particular system. Other drawbacks of many prevailing profiling tools are high overhead, significant measurement perturbation, as well as reduced portability of profiling tools, which are often implemented in platform-dependent native code. This article presents a novel profiling approach, which is entirely based on program transformation techniques, in order to build a profiling data structure that provides calling-context-sensitive program execution statistics. We explore the use of platform-independent profiling metrics in order to make the instrumentation entirely portable and to generate reproducible profiles. We implemented these ideas within a Java-based profiling tool called JP. A significant novelty is that this tool achieves complete bytecode coverage by statically instrumenting the core runtime libraries and dynamically instrumenting the rest of the code. JP provides a small and flexible API to write customized profiling agents in pure Java, which are periodically activated to process the collected profiling information. Performance measurements point out that, despite the presence of dynamic instrumentation, JP causes significantly less overhead than a prevailing tool for the profiling of Java code. Copyright © 2008 John Wiley & Sons, Ltd.

1097-024X/asset/olbannerleft.jpg?v=1&s=2d7d001211f2c40f177a231141601e9f52afc1f3)
1097-024X/asset/olbannerright.jpg?v=1&s=3aec7891a8ba78b361ead9743adfc0b6eae6369a)
1097-024X/asset/cover.gif?v=1&s=5a70ecca2928358eca4ff75b9921d0552ffb6539)