C++ PROGRAMMING :

QProfile toolkit - a class to profile your code

I have quite long experience in C++ programming and I always had problems profiling my application. Recently I found  Win32 function (QueryPerformanceCounter) which returns exact time in 1/1,000,000th of second and I wrote handy class to ease this task.

Main features of QProfile toolkit:

1. Application runs at the same speed as usual
2. You can get per-thread information
3. Profiling is independent from development enviroment
4. Report can be directed/appended to file or/and consol or/and VC++ debug window
5. Results can be sorted by total time, pure time, hit number or time per hit

How to use QProfile class

1. Download QProfile source code (7.5K)
2. Include QProfile.cpp file to your project
3. Add line "include "QProfile.h"" to the common header or to specific C++ file
4. Add QProfile macro to the target functions
5. Compile and run
6. Look at  "QProfile.txt" or/and consol or/and VC++ debug window for results.

 

QProfile macros

All you have to do is to add a line to a function you want to profile.

bool     YourClass::YourFunction(){
QPROFILE_FUN("YourClass::YourFunction");
...
if (...) return false;
...
return true;}

If you want to get results for this function  per thread:

bool     YourClass::YourFunction(){
QPROFILE_MT_FUN1("YourFunction,thread:%lx",GetCurrentThread());
...
if (...) return false;
...
return true;}

After program exits you'll get profile report like this:

----------------- Profiling .results -----------------
Date: 07.02.1999, Time: 13:08.32
------------------------------------------------------
|-Child|Total | .Hits .|Time/call | . MIN . | . MAX . | Function . .
------------------------------------------------------
| . . .|100.00| . . . 1| .7032.837| . .0.000| . .0.000|Total time
| 57.43| 83.59| . . . 1| .5878.893| 5878.893| 5878.893|Sorting int array[100], thread:ffc481ff
| .0.30| 26.16| . .1000| . . 1.840| . .0.299| .150.408| .Sort_Int_Array, thread:ffc481ff(31.3%)
| 47.03| 77.31| . . . 1| .5437.054| 5437.054| 5437.054|Sorting int array[1000],thread: ffc48bbb
| .0.14| 30.28| . . 386| . . 5.517| . .4.243| . 25.024| .Sort_Int_Array, thread:ffc48bbb(39.2%)
| . . .| 55.99| . .1386| . . 2.841| . .0.278| .150.383|::qsort - all threads

------------------------------------------------------

Download source - 7.5K


HOME