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:
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;
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).

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??