xmlgraphics-fop-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Austin <jwaus...@sympatico.ca>
Subject Measure (accurately) before optimizing.
Date Wed, 03 Dec 2003 19:03:42 GMT
Mea (tool) culpa!

I am investigating an inaccuracy in CPU measurements reported
by the Java Memory Profiler Tool that led me to the conclusion
thet PropertyList.findProperty is the high-runner in FOP 0.20.5.

A couple of other profilers report that findProperty() uses more
CPU than we would like (10-12%) but less than JMP reports. Note
that this measurement error in JMP also affects other XML code
such as Xerces and Xalan as these are also recursive.

I reported the question to the jmp-dev list and will advise when I
get corrected results from a corrected program.

I found a good list of profilers at:

I have tested several profilers and JMP is the easiest to use. It
is slower than Sun's hprof but has some nice features.

1) JMP -- nice but slow and has a problem over-reporting
   CPU seconds used by subordinates when those subordinates 
   include recursive methods (i.e. findProperty()).

2) JPerfAnal -- based on hprof but quite slow and the GUI was
   done quickly i.e. is a kludge) Usable and one source of
   my suspicions about JMP.

3) HPMeter -- based on hprof but it crashes on the output from
   my traces. Odd because HP are usually pretty good (except for
   some device drivers).

4) prophIt -- a demo delivered by Java Webstart uses hprof input
   and has a really novel GUI to visualize performance.
   Unfortunately the GUI isn't quite there yet. The program is
   represented like a skyscraper where each floor has slabs
   representing CPU used. Higher 'floors' represent subordinate 
   functions in the call tree.

   The item I don't like is the fact that the vertical dimension
   draws the eye to thin spires that are very tall. This could
   make you ignore bug flat slabs of CPU usage. Not all floors
   should be the same height.

   When they get this right it will be a category killer.

   Still very useful as it uses the same input as JPerfAnal
   HPMeter and a lot of others.

   This helped me find the error in JMP because I could not
   find findProperty() in the 3D graph.

5) EJP -- Extensible Java Profiler is a CS students excellent
   project. Unfortunately, it's a bit slow and requires one to
   read and follow directions. This one also helped me find the
   error in JMP after I read the Fine Manual.

I have also decided to use the command line class for future
performance measurements.

John Austin <jwaustin@sympatico.ca>

View raw message