View Single Post
Old 09-02-2011, 17:54   #7
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
Sotto Windows, il modo più preciso (mooolto preciso, mi pare che si possa arrivare alla precisione di meno di un nanosecondo) è di usare il Performance Counter, questo è un esempio:

Codice:
#include <windows.h>
...
LARGE_INTEGER a, b, oh, freq;
double tempo;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&a);
QueryPerformanceCounter(&b);
oh.QuadPart = b.QuadPart - a.QuadPart;
QueryPerformanceCounter(&a);
//Inserisci qui il codice da eseguire
QueryPerformanceCounter(&b);
tempo = (double)(b.QuadPart - a.QuadPart - oh.QuadPart)/freq;
Questo ti restituirà il tempo in secondi. Se vuoi i millisecondi ti basta moltiplicare quel valore per 1000.
La parte iniziale è il calcolo dell'overhead, cioè serve per aumentare l'accuratezza rimuovendo il tempo necessario alla chiamata della funzione QueryPerformanceCounter.
Supdario è offline   Rispondi citando il messaggio o parte di esso