Originariamente inviato da MItaly
Se sei su Linux e non devi implementare questa funzionalità direttamente all'interno del tuo programma, una possibilità è richiamarlo dalla shell tramite il comando time, che cronometrerà il tempo impiegato dal tuo programma, dividendolo in tempo user, kernel e tempo effettivo.
In alternativa puoi usare semplicemente la syscall gettimeofday:
Sotto Windows puoi fare una cosa analoga con la API GetTickCount (per misurazioni sommarie) o con la QueryPerformanceCounter in abbinata alla QueryPerformanceFrequency (per misurazioni ad alta precisione).codice:#include <sys/time.h> /* ... */ timeval inizio, fine; /* Inizia a cronometrare da qui */ gettimeofday(&inizio, NULL); /* ...*/ /* Fine della misurazione */ gettimeofday(&fine, NULL); double tempoTrascorso=(fine.tv_sec-inizio.tv_sec)+(fine.tv_usec-inizio.tv_usec)/1000000.0;
Ho messo
int res, sec;
struct timeval t_inizio, t_fine;
res=gettimeofday(&t_inizio,NULL);
<parte di codice da monitorare>
res=gettimeofday(&t_fine,NULL);
sec=t_fine.tv_sec-t_inizio.tv_sec;
printf("\nIl tempo di elaborazione è %d sec",sec);
Va bene ugualmente??