Actually, one of my students, Nathan Hanish, at the University of Alabama in Huntsville added profiling to Kaffe's JIT for the IA-32 architecure this spring. We haven't released it yet. We are hoping we could incorporate it into the new code generator that is suppose to be out soon. We will have a poster at Java Grande (June 12-13) in San Francisco that describes it in more detail. The profiling makes use of inline code that reads the Pentium timestamp register. Below is the abstract for the poster presentation: Profiling Java Programs via High-Resolution Timing Measurements Nathan M. Hanish William Cohen Department of Electrical and Computer Engineering University of Alabama in Huntsville Huntsville, AL 35816 Abstract Given the interest in high-performance Java such as Hotspot [4][1], high-resolution, low-overhead time measurements are required for accurate profiling of the executing program. These time measurements allow programmers of applications and runtime systems to identify the code that should be examined for possible performance improvements. Modifications were made to the Kaffe Java Virtual Machine's (JVM) Just-In-Time (JIT) translator [5] to generate instructions to read the Pentium timestamp register [2] and determine the amount of time spent in each method and the number of times that each method was invoked. The overhead of the additional instrumentation was relatively low, typically about 2%. This high-resolution profiling enhanced Kaffe JVM was used to profile a number of benchmark programs and several possible performance improvement were identified for Kaffe's Java Virtual Machine. The profiling tool showed approximately one quarter of the methods were invoked only once during the execution of the programs and that there was an overhead of 1.5 microseconds per method invocation to check for the stack overflow. The profiling tool identified class initializers, such as /java/lang/System, contributed over 300 milliseconds to the runtime of each program. Additionally, the tool was used to identify possible improvements to Pizza [3], a Java to bytecode translator. References [1] Ping Huang, Selecting better-performing alternative code using run-time profiling feedback, http://www.ai.mit.edu/projects/reinventing_computing/pa- pers/theses/pshuang/meng/main.html, Masters Thesis, Massachusetts Institute of Technology, June 1995. [2] Intel, Intel Architecture Optimization Manual, Mt. Prospect, Illinois, order number 242816-003, 1997. [3] Martin Odersky and Philip Wadler, ``Pizza into Java: Translating theory into practice,'' Proc. 24th ACM Symposium on Principles of Programming Languages, Paris, France, January 1997. [4] Sun, THE JAVA HOTSPOTTM PERFORMANCE ENGINE ARCHITECTURE, http://www.javasoft.com/products/hotspot/whitepaper.htm- l, April 1999. [5] Transvirtual, Kaffe, http://www.transvirtual.com/kaffe.html, May 1999. > > > On Sat, 5 Jun 1999, Samarjeet S Tomar wrote: > > | Is there a Java profiler for kaffe ? > > I don't believe Kaffe supports the "-prof" command-line option yet. > > Alan > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ William Cohen cohen@ece.uah.edu Assistant Professor Electrical and Computer Engineering College of Engineering University of Alabama in Huntsville voice: 256/890-6830 Huntsville, AL 35899 fax: 256/890-6803 ECE Homepage: http://www.eb.uah.edu/ece/ecehome.html ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^