View Single Post
Old 09-02-2011, 18:11   #8
markz88
Junior Member
 
Iscritto dal: May 2007
Messaggi: 28
Quote:
Originariamente inviato da Supdario Guarda i messaggi
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.

Grazie mille ma con DevC++ mi da l'errore:

"Invalid operands to binary /"

sulla stringa

Codice:
tempo = (double)(b.QuadPart - a.QuadPart - oh.QuadPart)/freq;

Ultima modifica di markz88 : 09-02-2011 alle 18:25.
markz88 è offline   Rispondi citando il messaggio o parte di esso