Enable/Disable Profiling Tutorial: 2 - Analyzing Profiler Results

Applies to AQTime 8.81, last modified on November 27, 2020

Take a look at the Report panel. It shows profiling results for all the routines that were executed during the profiler run (the figure shows the results of profiling of a sample Visual C++ application):

Profiling results in the Report panel

Click the image to enlarge it.

We are interested in routines that enabled and disabled profiling and in routines that were called from those routines. All these functions are kept in the OnOffProfilingDlg.cpp file. Let’s filter the contents of the Report panel in order to see only these routines. (Note that the file name depends on the sample that you profiled. For instance, if you use a Delphi sample the file name is Main.pas).

  • Add the Source File column to the Report panel (see Adding and Removing Columns for more information on how to do this).
  • Click the button in the caption of the Source File column and select the file name that corresponds to your sample (in our case, it is OnOffProfilingDlg.cpp) from the dropdown list. The file name may contain the path.

At the previous step, some routines of the OnOffProfilingDlg.cpp file were not profiled (ProcD and ProcB). By default, these routines are hidden in the Report panel. To make them visible, click Show non-hit routines item on the Profiler toolbar. The Hit Count result of these routines is 0:

Profiling results in the Report panel

Click the image to enlarge it.

Let’s see why the ProcB and ProcD routines were excluded from profiling. To do this, switch to the Editor panel and explore the source code. Pay attention to the routines that are called upon pressing the Enable and Disable buttons in the application. The names of these routines depend on the sample application you use. In the Visual C++ example they are called OnEnable and OnDisable. We will use these names to refer to the routines.

AQTime reports that the OnEnable routine was not executed. This happens because the program calls this routine while the profiling is disabled. Therefore, AQTime does not profile this routine. The first line of the OnDisable routine disables profiling. So, AQTime profiles only a part of this routine. For instance, it does not profile the third line when the ProcB routine is called.

Source code in the Editor panel

Click the image to enlarge it.

If you want to profile a routine, you should call EnableProfiling(true) before and EnableProfiling(false) after you call this routine. Do not call EnableProfiling within the routine you wish to profile, since you may get incorrect profiling results.

Prev    Next

See Also

Controlling Profiling From Application Code

Highlight search results