Here's a sample profile trace from profiling our bug tracking and issue management application, JIRA:

[250ms] - /atlassian/jira/secure/views/dashboard.jsp <-- jsp profiling
  [0ms] - Dashboard.getApplicationTitle() <-- WW profiling
  [0ms] - JiraWebActionSupport.getRemoteUser()
  [50ms] - Dashboard.getLeftCol()
    [20ms] - PortletManager.getPortalPageConfiguration() <-- factory object
    [0ms] - PortalPageConfiguration.isDefault()
    [0ms] - PortalPageConfiguration.getLeftPortletConfigs()
  [0ms] - List.iterator()
    [0ms] - List.iterator() <-- even profiling Lists!
  [0ms] - Iterator.hasNext()
    [0ms] - Iterator.hasNext()
  [0ms] - Iterator.next()
    [0ms] - Iterator.next()

As you can see from above - it profiles more than one layer of your application, and it nests the results - so you can pin down exactly which methods are causing your problems. If any of your methods have a return value that is an interface, then that return object can also be profiled (as seen above where we profile java.util.List).

You can profile:

  • Your entire web tier - using a Servlet filter
  • Any method which returns an interface (ie Factory methods)
  • All Webwork 1.3 actions - getters, execute() and command driven actions
  • Any code that you would normally profile using System.currentTimeMillis()
  • Any method you call using java.lang.reflect.*

© 2002-2003, Atlassian Software Systems Pty Ltd