ANTS Performance Profiler - 7.4

ANTS Performance Profiler

Working with the call tree - ANTS Performance Profiler

The call tree shows the stack traces that were executed by your application during the time period you have selected. By default, stack traces are displayed top-down (calling method above called method). The "hottest" stack trace (the one that took the most time to run) is displayed at the top of the call tree, and is automatically expanded. If a method was called in several contexts, it is displayed once for each context in the call tree.

See Tips on using the call tree for more information on how to use the call tree effectively.

calltree2

Reading the call tree

The following data is shown for each method within the stack trace, for the selected time period:

  • Time: the total execution time for the method within this stack trace.
  • Time With Children: the total execution time for the method and all its children within this stack trace.
  • Hit Count: the number of times the call was made within this stack trace.

When time is shown as a percentage, the Time (%) for each method shows the proportion of the total execution time that the method contributed during the selected period. The total percentage for all methods can sum to over 100 on machines using multiple CPU cores.

SQL calls

In ANTS Performance Profiler Professional edition, SQL calls made by the application are also shown within the stack trace, with the following information:

  • Time: The time until the first result for the query was returned.
  • Time With Children: The total execution time for the call and all its children within this stack trace.
  • Hit Count: The number of times the query was called within this stack trace.

HTTP calls

In ANTS Performance Profiler Professional edition, if your application is an ASP.NET site, you will also see incoming HTTP requests in the call tree, with the following information:

  • Time: The time taken to execute the .NET helper method(s) that ran the request.
  • Time With Children: The total execution time for the request and all the .NET methods executed because it was made.
  • Hit Count: The number of times the request was called within this stack trace.

To collapse all nodes except HTTP requests, right-click anywhere in the call tree and select Show only incoming HTTP calls. SQL calls will also be shown.

Call tree icons

Each tree item is shown with one or more of the following icons:

calltreeleafsymbol

Root method or leaf method. Root methods are not called by any other method; leaf methods do not call any other method.

calltreetopdownarrow

Indicates call flow when the call tree direction is top-down (calling method above called method).

calltreebottomuparrow

Indicates call flow when the call tree direction is bottom-up (called method above calling method).

app_hidden_flow

Indicates one or more collapsed methods that can be expanded.

app_hidden_rootleaf

Indicates one or more collapsed methods that cannot be expanded (because they are all leaf nodes that have been filtered out of the current view - see Filtering the call tree below).

hoticon

Method is part of the hottest (longest running) stack trace. Used instead of the root/leaf or call-flow icons.

app_sql_icon

Indicates a SQL call generated by the parent .NET method.

app_http_icon

Indicates an HTTP request: the .NET methods listed as children of this item were called when this HTTP request was made.

Methods listed in bold have source code available. To display the method's source code, click any bold method. Line-level timings are also available in the source-code pane if you use one of the Line-level ... profiling modes.

You may also see the following items in the call tree. These are shown in bold orange text, and represent time spent in your application that is in addition to time spent executing specific methods:

  • Waiting for synchronization: A thread was waiting. For example, if you have called the Monitor.Wait method, the thread will wait for synchronization until the lock is reacquired. Another cause is that the finalizer thread spends most of its time waiting. Expand the call graph to see what caused the wait. Items that are Waiting for synchronization only contribute to timings in the call tree when the Timing display option is set to Wall-clock time. To exclude time due to Waiting for synchronization items, select CPU time from the Timing display option.
  • Thread blocked: The executing thread was blocked. For example, the thread may have been sleeping, or waiting for access to a shared resource. Thread blocked items only contribute to timings in the call tree when the Timing display option is set to Wall-clock time. To exclude time due to Thread blocked items, select CPU time from the Timing display option. The call-tree display options are described below.
  • Waiting for I/O to complete: The executing thread was blocked waiting for file I/O. Waiting for I/O to complete items only contribute to timings in the call tree when the Timing display option is set to Wall-clock time. To exclude time due to Waiting for I/O to complete items, select CPU time from the Timing display option. The call-tree display options are described below.
  • Transition to unmanaged code: A transition from managed code to unmanaged code occurred at this point in the stack trace. In general, line-level and method-level timings are not available for the unmanaged code. However, for unmanaged methods that are declared with extern within managed code, method-level timings are available.
  • Transition to managed code: A transition from unmanaged code to managed code occurred at this point in the stack trace.
  • JIT overhead: JIT compilation occurred at this point in the stack trace during execution of your application. The method that needed to perform the compilation is shown as the parent of a JIT overhead item.
  • Profiler overhead: Additional overhead introduced by ANTS Performance Profiler. This is unlikely to be seen when the option to adjust timings to compensate for overhead added by the profiler is enabled.
  • Assembly load or unload: A .NET assembly was loaded or unloaded.
  • Module load or unload: A .NET module was loaded or unloaded.

To create a new call graph based on a particular method, select the method in the call tree, and click the new call graph button newcallgraph in the Method column.

To switch to view a SQL query in Database Calls view, select the method in the call tree, and click the app_sql_icon button in the Method column.

See also

Was this article helpful?

Search support
Forums

ANTS Performance Profiler

all products