PDA

Visualizza la versione completa : [C++] Differenza di tempo in millisecondi


Cesaropa12
02-03-2007, 17:33
E' possibile sapere la differerenza fra 2 tempi in float?
Se faccio cosi' ottengo solamente una differenza in secondi:
long t=time(0);
...
cout<<time(0)-t;

andbin
02-03-2007, 18:00
Originariamente inviato da Cesaropa12
E' possibile sapere la differerenza fra 2 tempi in float?
Se faccio cosi' ottengo solamente una differenza in secondi:
long t=time(0);
...
cout<<time(0)-t; gettimeofday() su Linux, GetTickCount() su Win32

oregon
02-03-2007, 18:26
Tieni presente che la risoluzione della GetTickCount dipende da quella del timer che in genere non e' minore di 15 ... 18 ms. Quindi non potrai apprezzare mai differenze di tempo minori.

Inoltre, la GetTickCount usa un contatore a 32 bit che ritorna a zero dopo poco piu' di 49 giorni. Se ci sono problemi, a partire da Vista, puoi usare la GetTickCount64.

Se vuoi una maggiore precisione, devi usare i

Multimedia Timers

di cui puoi leggere a partire da

http://msdn2.microsoft.com/en-us/library/ms712704.aspx

andbin
02-03-2007, 20:58
GetTickCount() e timeGetTime() hanno entrambe una granularità che si aggira intorno ai 15~16 millisecondi.

Si può fare di meglio usando il timer ad alta risoluzione, cioè: QueryPerformanceFrequency() insieme a QueryPerformanceCounter().

Cesaropa12
02-03-2007, 21:00
Come mai ci sono nomi di funzioni diverse sui due sistemi?

andbin
02-03-2007, 21:15
Originariamente inviato da Cesaropa12
Come mai ci sono nomi di funzioni diverse sui due sistemi? Perché per fare queste cose (informazioni sul tempo ad alta risoluzione) e altre cose, si devono usare funzioni non standard e specifiche del sistema operativo.

Cesaropa12
03-03-2007, 16:08
Ho utilizzato la funzione gettimeofday, tuttavia, non riesco a capire cosa vuol dire tv_sec. Millesecondi per quell'istanza di tempo?

andbin
03-03-2007, 20:41
Originariamente inviato da Cesaropa12
Ho utilizzato la funzione gettimeofday, tuttavia, non riesco a capire cosa vuol dire tv_sec. Millesecondi per quell'istanza di tempo?
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
Secondi/Microsecondi dalle 00:00:00 UTC, January 1, 1970

Loading