1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
// open the current process
HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, TRUE, GetCurrentProcessId());
// check return value (h != NULL)
// read process counters before call
FILETIME CreationTimeBeforeCall;
FILETIME ExitTimeBeforeCall;
FILETIME KernelTimeBeforeCall;
FILETIME UserTimeBeforeCall;
BOOL ret = GetProcessTimes(h, &CreationTimeBeforeCall, &ExitTimeBeforeCall, &KernelTimeBeforeCall, &UserTimeBeforeCall);
// check return of GetProcessTimes() call
// appel de la fonction dont on veut mesure le temps CPU
ma_fonction_que_je_veux_mesurer();
// read process counters after call
FILETIME CreationTimeAfterCall;
FILETIME ExitTimeAfterCall;
FILETIME KernelTimeAfterCall;
FILETIME UserTimeAfterCall;
BOOL ret = GetProcessTimes(h, &CreationTimeAfterCall, &ExitTimeAfterCall, &KernelTimeAfterCall, &UserTimeAfterCall);
// check return of GetProcessTimes() call
// close the process handle (no more needed)
CloseHandle(h);
// analyse des temps retournés
// le temps CPU et utilisateur passé dans la fonction ma_fonction_que_je_veux_mesurer() est:
// KernelTimeAfterCall - KernelTimeBeforeCall
// UserTimeAfterCall - UserTimeBeforeCall
// Attention, cette structure est sur 2 DWORD
//typedef struct _FILETIME {
// DWORD dwLowDateTime; /* low 32 bits */
// DWORD dwHighDateTime; /* high 32 bits */
//} FILETIME, *PFILETIME, *LPFILETIME;
// donc il faut faire des calcul intermédiaires |
Partager