When the Routines category is selected in the Explorer panel, the Report panel shows profiling results for individual routines. The panel contains several columns that do not depend on the active counter and there is also a set of columns that depend on the counter that was used during profiling.
Below is a description of the available columns:
Columns that do not depend on the active counter
Columns (in alphabetical order) | Description |
---|---|
Address | Routine’s address in memory. This column is used for unmanaged (native-code) routines only. |
Analysis Result | Specifies if the routine was instrumented or not. If the routine was instrumented, this column is empty. Otherwise, the column displays a short description why the routine was not instrumented:
Less than 5 bytes - The routine occupies less than 5 bytes in memory (for 32-bit applications). See Profiling Small Functions. Less than 6 bytes - The routine occupies less than 6 bytes in memory (for 64-bit applications). See Profiling Small Functions. No line info - The routine was added to a line-level area, but the debug information contains no info about routine lines. These routines can be profiled at routine level only. Unsafe code - AQTime was not able to instrument the routine safely. This typically occurs when the routine’s binary code is intermixed with data areas. See Profiling Routines That Have Unsafe Code. No ret instruction - The routine’s binary code does not contain the Duplicated code - The routine whose code coincides with code of another routine. To learn more about this, see Profiling Duplicated Code. |
Class Name | Name of the class where the method is defined. |
Code Type | Specifies the type of the routine’s code. The following values are possible:
|
Exceptions (#) | Number of times the method was entered but not successfully exited. This is usually a count of exception exits. |
Hit Count | The number of routine calls that were profiled. See also Skip Count. The total number of times the routine was executed is determined as Hit Count + Skip Count. |
Max Recursion Depth | The maximum number of nested (recursive) calls to the function reached during the run. |
Module Name | The name of the module which contains the profiled routine. |
Namespace | Namespace of the method’s class (this column is used for managed routines only). |
Routine Name | Method name. |
Skip Count | Number of times the routine was excluded from profiling, because the profiling status was off (this can be, for example, the number of times the routine was affected by an off-trigger or the number of times the routine was executed when the Enable/Disable Profiling button was not pressed). See also Hit Count. The total number of times the routine was executed is determined as Hit Count + Skip Count. |
Source File | Name of the source file for the method. The values for this column are read from the application’s debug info. If debug info does not contain information on the file name, the column is empty. |
Source Line | Source file’s line number where the method’s implementation begins. The values for this column are read from the application’s debug info.
|
Token | The routine’s token. |
Unit Name | The name of the linkage unit containing the routine. This column is used for unmanaged (native-code) routines only. |
Columns specific to the Elapsed Time, User Time and User+Kernel Time counters
You can specify the measurement unit for the following columns (seconds, milliseconds, microseconds or machine cycles) using the Counter unit box on the Profiler toolbar. See also Profiler Toolbar - Performance Profiler Items.
Columns (in alphabetical order) | Description | ||
---|---|---|---|
Average Time | Average time spent executing the routine’s code on one call. This is simply Time / (Hit Count + Skip Count). | ||
Average Time with Children | Average time spent on each call to the routine, child calls included. This is simply Time with Children / (Hit Count + Skip Count). | ||
First Time | Time spent executing the routine’s code on the first call (child calls are excluded). | ||
First Time With Children | Time spent executing the routine’s code on the first call (including time of child calls that were made during the first routine’s call).
|
||
Max Time and Min Time |
Maximum and minimum time spent executing the routine’s code on a call. Exceptional values point out perhaps unexpected special conditions. | ||
Max Time with Children and Min Time with Children |
Maximum and minimum time spent executing the routine’s code on a call (including child function calls). Exceptional values point out perhaps unexpected special conditions. | ||
Shared Time | Total time spent executing the routine’s code, as a percentage of the total time spent on calls to the routine including calls to child routines.This is simply (Time / Time with Children)*100. | ||
Time | Total time spent executing the routine’s code excluding child calls. The sum of all profiled methods appears in the footer of this column. | ||
Time with Children | Total time spent on calls to the routine including calls to child routines. The sum for all profiled routines is displayed in the footer of this column. It will normally be an important multiple of actual profile-run duration, as child calls are counted several times. | ||
% Time | Total time spent executing the routine’s code, as a percentage of the time spent executing all profiled routines. | ||
% with Children | Time with Children value as a percentage of the sum of Time with Children for all profiled routines. |
Columns specific to the CPU Cache Misses counter
Columns (in alphabetical order) | Description |
---|---|
Average Misses | Average number of cache misses that occurred during execution of the method’s code on one call. This is simply Misses / (Hit Count + Skip Count). |
Average Misses with Children | Average number of cache misses that occurred during the routine execution (including cache misses that occurred in child calls). This is simply Misses with Children / (Hit Count + Skip Count). |
First Misses | The number of cache misses that occurred during execution of the function’s code on the first call (child calls are excluded). |
First Misses With Children | The number of cache misses that occurred during execution of the function’s code on the first call (including child calls). |
Max Misses and Min Misses |
Maximum and minimum number of cache misses that occurred during execution of the method’s code on a call. Exceptional values point out perhaps unexpected special conditions. |
Max Misses with Children and Min Misses with Children |
Maximum and minimum number of cache misses that occurred during the routine execution (including child function calls). Exceptional values point out perhaps unexpected special conditions. |
Misses | Total number of cache misses that occurred during execution of the routine’s code excluding child calls. The sum for all profiled routines appears in the footer of this column. |
Misses with Children | Total number of cache misses that occurred during execution of the routine (including its calls to child methods). The sum for all profiled routines is displayed in the footer of this column. |
Shared Misses | Total number of cache misses that occurred during the routine execution (excluding child calls), as a percentage of the total number of cache misses that occurred during the routine execution (including child calls). That is, this is simply (Misses / Misses with Children)*100. |
% Misses | Total number of cache misses that occurred during the routine execution (excluding child calls), as a percentage of the sum of cache misses that occurred during execution of all profiled routines. |
% with Children | Total number of cache misses as a percentage of the sum of Misses with Children for all profiled routines. |
Columns specific to the CPU Mispredicted Branches counter
Columns (in alphabetical order) | Description |
---|---|
Average Branches | Average number of branches that mispredicted during execution of the method’s code on one call. This is simply Branches / (Hit Count + Skip Count). |
Average Branches with Children | Average number of branches that were mispredicted during the routine execution (including branches mispredicted in child calls). This is simply Branches with Children / (Hit Count + Skip Count). |
Branches | Total number of branches that were mispredicted during execution of the routine’s code excluding child calls. The sum for all profiled routines appears in the footer of this column. |
Branches with Children | Total number of branches that were mispredicted during execution of the routine (including mispredictions in child methods). The sum for all profiled routines is displayed in the footer of this column. |
First Branches | The number of mispredictions that occurred during execution of the function’s code on the first call (child calls are excluded). |
First Branches With Children | The number of mispredictions that occurred during execution of the function’s code on the first call (including child calls). |
Max Branches and Min Branches |
Maximum and minimum number of mispredictions that occurred during execution of the method’s code on a call. Exceptional values point out perhaps unexpected special conditions. |
Max Branches with Children and Min Branches with Children |
Maximum and minimum number of mispredictions that occurred during the routine execution (including mispredictions in child functions). Exceptional values point out perhaps unexpected special conditions. |
Shared Branches | Total number of mispredicted branches that occurred during the routine execution (excluding child calls), as a percentage of the total number of mispredictions that occurred during the routine execution (including child calls). That is, this is simply (Branches / Branches with Children)*100. |
% Branches | Total number of branches that were mispredicted during the routine execution (excluding child calls), as a percentage of the sum of mispredictions occurred during execution of all profiled routines. |
% with Children | Total number of mispredicted branches as a percentage of the sum of Branches with Children for all profiled routines. |
Columns (in alphabetical order) | Description |
---|---|
Average Faults | Average number of page faults that occurred during execution of the method’s code on one call. This is simply Faults / (Hit Count + Skip Count). |
Average Faults with Children | Average number of page faults that occurred during the routine execution (including page faults that occurred in child calls). This is simply Faults with Children / (Hit Count + Skip Count). |
Faults | Total number of page faults that occurred during execution of the routine’s code (child calls are excluded). The sum for all profiled routines appears in the footer of this column. |
Faults with Children | Total number of page faults that occurred during execution of the routine (including page faults that occurred in child methods). The sum for all profiled routines is displayed in the footer of this column. |
First Faults | The number of page faults that occurred during execution of the function’s code on the first call (child calls are excluded). |
First Faults With Children | The number of page faults that occurred during execution of the function’s code on the first call (child calls are included). |
Max Faults and Min Faults |
Maximum and minimum number of page faults that occurred during execution of the method’s code on a call. Exceptional values point out perhaps unexpected special conditions. |
Max Faults with Children and Min Faults with Children |
Maximum and minimum number of page faults that occurred during the routine execution (including page faults that occurred in child functions). Exceptional values point out perhaps unexpected special conditions. |
Shared Faults | Total number of page faults that occurred during the routine execution (excluding child calls), as a percentage of the total number of page faults that occurred during the routine execution (including child calls). That is, this is simply (Faults / Faults with Children)*100. |
% Faults | Total number of page faults that occurred during the routine execution (excluding child calls), as a percentage of the sum of page faults that occurred during execution of all profiled routines. |
% with Children | Total number of page faults as a percentage of the sum of Faults with Children for all profiled routines. |
Columns (in alphabetical order) | Description |
---|---|
Average Replays | Average number of replays that occurred during execution of the method’s code on one call. This is simply Replays / (Hit Count + Skip Count). |
Average Replays with Children | Average number of replays that occurred during the routine execution (including replays that occurred in child calls). This is simply Replays with Children / (Hit Count + Skip Count). |
First Replays | The number of replays that occurred during execution of the function’s code on the first call (child calls are excluded). |
First Replays With Children | The number of replays that occurred during execution of the function’s code on the first call (child calls are included). |
Max Replays and Min Replays |
Maximum and minimum number of replays that occurred during execution of the method’s code on a call. Exceptional values point out perhaps unexpected special conditions. |
Max Replays with Children and Min Replays with Children |
Maximum and minimum number of replays that occurred during the routine execution (including replays that occurred in child functions). Exceptional values point out perhaps unexpected special conditions. |
Replays | Total number of replays that occurred during execution of the routine’s code (child calls are excluded). The sum for all profiled routines appears in the footer of this column. |
Replays with Children | Total number of replays that occurred during execution of the routine (including replays that occurred in child methods). The sum for all profiled routines is displayed in the footer of this column. |
Shared Replays | Total number of replays that occurred during the routine execution (excluding child calls), as a percentage of the total number of replays that occurred during the routine execution (including child calls). That is, this is simply (Replays / Replays with Children)*100. |
% Replays | Total number of replays that occurred during the routine execution (excluding child calls), as a percentage of the sum of replays that occurred during execution of all profiled routines. |
% with Children | Total number of replays as a percentage of the sum of Replays with Children for all profiled routines. |
Columns specific to the 64K Aliasing Conflicts counter
Columns (in alphabetical order) | Description |
---|---|
Average Conflicts | Average number of aliasing conflicts that occurred during execution of the method’s code on one call. This is simply Conflicts / (Hit Count + Skip Count) . |
Average Conflicts with Children | Average number of aliasing conflicts that occurred during the routine execution (including conflicts that occurred in child calls). This is simply Conflicts with Children / (Hit Count + Skip Count). |
Conflicts | Total number of aliasing conflicts that occurred during execution of the routine’s code (child calls are excluded). The sum for all profiled routines appears in the footer of this column. |
Conflicts with Children | Total number of aliasing conflicts that occurred during execution of the routine (including conflicts that occurred in child methods). The sum for all profiled routines is displayed in the footer of this column. |
First Conflicts | The number of conflicts that occurred during execution of the function’s code on the first call (child calls are excluded). |
First Conflicts With Children | The number of aliasing conflicts that occurred during execution of the function’s code on the first call (child calls are included). |
Max Conflicts and Min Conflicts |
Maximum and minimum number of aliasing conflicts that occurred during execution of the method’s code on a call. Exceptional values point out perhaps unexpected special conditions. |
Max Conflicts with Children and Min Conflicts with Children |
Maximum and minimum number of aliasing conflicts that occurred during the routine execution (including conflicts that occurred in child functions). Exceptional values point out perhaps unexpected special conditions. |
Shared Conflicts | Total number of aliasing conflicts that occurred during the routine execution (excluding child calls), as a percentage of the total number of aliasing conflicts that occurred during the routine execution (including child calls). That is, this is simply (Conflicts / Conflicts with Children)*100. |
% Conflicts | Total number of aliasing conflicts that occurred during the routine execution (excluding child calls), as a percentage of the sum of conflicts that occurred during execution of all profiled routines. |
% with Children | Total number of aliasing conflicts as a percentage of the sum of Conflicts with Children for all profiled routines. |
Columns specific to the Context Switches counter
Columns (in alphabetical order) | Description |
---|---|
Average Switches | Average number of context switches that occurred during execution of the method’s code on one call. This is simply Switches / (Hit Count + Skip Count). |
Average Switches with Children | Average number of context switches that occurred during the routine execution (including switches that occurred in child calls). This is simply Switches with Children / (Hit Count + Skip Count). |
First Switches | The number of context switches that occurred during execution of the function’s code on the first call (child calls are excluded). |
First Switches With Children | The number of context switches that occurred during execution of the function’s code on the first call (child calls are included). |
Max Switches and Min Switches |
Maximum and minimum number of context switches that occurred during execution of the method’s code on a call. Exceptional values point out perhaps unexpected special conditions. |
Max Switches with Children and Min Switches with Children |
Maximum and minimum number of context switches that occurred during the routine execution (including switches that occurred in child functions). Exceptional values point out perhaps unexpected special conditions. |
Shared Switches | Total number of context switches that occurred during the routine execution (excluding child calls), as a percentage of the total number of context switches that occurred during the routine execution (including child calls). That is, this is simply (Switches / Switches with Children)*100. |
Switches | Total number of context switches that occurred during execution of the routine’s code (child calls are excluded). The sum for all profiled routines appears in the footer of this column. |
Switches with Children | Total number of context switches that occurred during execution of the routine (including switches that occurred in child methods). The sum for all profiled routines is displayed in the footer of this column. |
% Switches | Total number of context switches that occurred during the routine execution (excluding child calls), as a percentage of the sum of switches that occurred during execution of all profiled routines. |
% with Children | Total number of context switches as a percentage of the sum of Switches with Children for all profiled routines. |
when conditions for the correct execution of this operation are not satisfied.
Replays may be caused by cache misses, store forwarding issues, etc.
Normally, certain number of replays always occur during the application
execution. However, a superfluous number of replays designates a
performance problem.
See Also
Performance Profiler - Report Panel
About the Report Panel
Results of the Routines Category