program       registration       lodging       call for contributions       organization       [aosd home]

overview       technical papers       practitioner reports       workshops       tutorials       demos       exhibits      
Go back to Demonstrations Home

Aspect-Oriented Profiler

Wed March 19, 11:00 - 12:30
  - Fri March 21, 11:00 - 12:00

Matthew Webster (IBM UK)
  - Robert Berry (IBM)

Performance measurement, analysis and improvement are central activities in the software development lifecycle. Ideally, performance considerations play an early role, e.g., at design time, as recommended in performance-oriented design methodologies. But most often, they factor into the later stages of the development process, and require the involvement of performance analysts wielding specialised profiling technology.

Further, most existing profilers focus on CPU time and program flow. Instead, we sought a solution to allow applications to be profiled on the basis of data flow a key requirement for a common, but not well addressed problem of caching opportunity detection. We required a technique and environment to selectively gather information on certain methods, argument values, return values, to conduct correlation analysis between these, and to couple that information with timing information. While some of this information could certainly be gathered manually, e.g., Java debuggers based on JVMDI are able to track arguments and return values this is typically a single-step debugging operation. Manually inserted instrumentation (e.g., using System.out.println statements, or through the use of a logging or other API) is also possible. Alternately, specialized instrumentation can be developed based on byte-code modification techniques interestingly this is where we began but the flexibility of AOSD techniques quickly suggested a different approach.

One of the key benefits of AOSD and AspectJ in particular is the ability to identify specific methods within a Java program and add new logic in a non-invasive manner. Reflective mechanisms also allow the extraction of argument and return values at runtime. AspectJ is further exploited when prototyping caching opportunities. Any method identified as performing below its expected level of performance can be intercepted through the use of around advice. A simple caching scheme can then be deployed such as checking to see if the method's argument values have been used before and, if so, returning the same return value; if not, calling proceed and storing the obtained return value in the cache.

The profiler is an Eclipse-based plugin developed as part of an Extreme Blue project. The AspectJ plugin is used to build an aspect into the program being profiled. The Aspect is generated by the Profiler so a deep understanding of AOSD is not required by the user. The demonstration will show the identification, analysis and solution to a performance problem in a Java program. At each stage the exploitation of AOSD techniques will be highlighted.


For additional information, clarifications, questions, or special requirements, please contact the AOSD 2003 Demonstrations Chair: Mik Kersten (

 Send comments to: