2012-12-25 7 views
6

Come posso contare il millisecondo per una determinata funzione (chiamata più volte)?
ho pensato di:
CTime::GetCurrentTM() prima,
CTime::GetCurrentTM() dopo,Funzione di misurazione MFC in millisecondi

e quindi inserire il risultato di CTimeSpan diff = after - before.
Infine memorizza quel diff per membro globale che somma tutte le differenze poiché voglio sapere il tempo totale trascorso da questa funzione.

ma darà la risposta in pochi secondi e non in millisecondi.

risposta

6

MFC è C++, giusto?

Se è così, è sufficiente utilizzare clock().

#include <ctime> 

clock_t time1 = clock(); 
// do something heavy 
clock_t time2 = clock(); 
clock_t timediff = time2 - time1; 

float timediff_sec = ((float)timediff)/CLOCKS_PER_SEC; 

Questo di solito fornisce una precisione millisecondo.

1

Se si utilizza MFC, il modo migliore è utilizzare l'API WIN. E poiché sei preoccupato solo di calcolare la differenza di orario, la funzione qui sotto potrebbe adattarsi perfettamente a te.

GetTickCount64() 

restituisce direttamente il number of milli seconds that has elapsed da quando il sistema è stato avviato.

Se non si prevede di mantenere il sistema a lungo (per l'appunto più di 49,7 giorni), la versione po 'più veloce - GetTickCount() funzione

+0

Poiché si basa su quando il sistema si avvia, mi sembra che questo approccio abbia un problema: quando un computer si riavvia molto raramente: potrebbe fuoriuscire il contatore! – sergiol

0

Il COleDateTime è noto a lavorare internamente sulla base di millesimi di secondo, perché memorizza timestamp sulla sua variabile m_dt, che è di tipo DATE, quindi con risoluzione per lo scopo previsto.

posso suggerire di basare il vostro tempo su

DATE now= (DATE) COleDateTime::GetCurrentTime(); 

e dopo fare i rispettivi calcoli.