- Quickly discover what a program is doing at any point in time
- Easily identify performance issues
- Be surprised how quickly you can realize improvements
- See your improvements at work and have the evidence
- Support for C/C++, .NET and Java platforms
The 'Call Graph' option is typically used in situations where an activity is performing slower than expected, but it can also be used simply to better understand the patterns of behavior at play during an activity.
The Profiler operates by taking samples - or Call Stacks - at regular intervals over a period of time; the interval is set using the Profiler toolbar. You use the Profiler to run a particular program, or you can attach to an existing process. The Profiler capture is controlled, and you can pause and resume capture at any time. You can also elect to have capture initiated immediately when the Profiler is started. If necessary, you can discard any captured samples and start again during the same session. If you cannot continue with the same session, restarting the Profiler is quick and easy.
Note that the 'Process Time (estimated)' field shows an estimate of how long the process being profiled has been running, taking into account the interruptions to the process by the Profiler in collecting samples.
Results can be produced at any time during the session; however, capture must be disabled in order for theto become active. It is up to you to decide how long you let the Profiler run. You might know when an activity is finished, or it might be apparent for other reasons. The reason you are here might be that an activity is not completing at all.
The Report button will be enabled by either pausing capture or stopping the Profiler altogether.
Results are displayed in a Report view. The report opens with three tabs initially visible: the Call Graph, the Summary Report (Function Summary) and the Hit Analysis tabs. The reports can be saved to file, stored in the model as Artifacts or posted in the Model Library.
The Call Graph Tab
The Summary Report Tab
The Hit Analysis Tab
The 'Hit Analysis' tab displays a number of columns:
- Function: the name of the function (or module if no symbols for module)
- Hits: the number of samples taken, in which the function was executing.
- Depth: the frame number or stack depth at which the hit took place.
- Occurrences: the number of times the function was hit at this particular stack depth
The number of hits on a particular function are aggregated according to the stack frame depth when sampled.
If the function name is unavailable, for example Windows System DLL's such as User32 or DLL's with no debug information, the module name is shown instead.