per calcolare il tempo di esecuzione di un programma con precisione al microsecondo ho usato la funzione timeval_subtract che si trova ad esempio in questo post: http://stackoverflow.com/questions/1468 ... lliseconds.
Non mi è chiaro però cosa succede quando il valore ritornato dalla timeval_subtract è negativo: dovrò semplicemente considerare l'opposto del risultato per ottenere il tempo che volevo calcolare?
Di seguito posto il codice così come l'ho implementato.
Codice: Seleziona tutto
#include <stdio.h>
#include <time.h>
#include <x86_64-linux-gnu/sys/time.h>
#define SCALETIME 1000000.0
/* Return 1 if the difference is negative, otherwise 0. */
int timeval_subtract(struct timeval *result, struct timeval *t2, struct timeval *t1)
{
long int diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
result->tv_sec = diff / 1000000;
result->tv_usec = diff % 1000000;
return (diff<0);
}
int main (int ac, char **av)
{
struct timeval tvBeginTotal, tvEndTotal, tvElapsedTotal;
double ElapsedTimeTotal;
gettimeofday(&tvBeginTotal, NULL);
//CORPO DEL CODICE
gettimeofday(&tvEndTotal, NULL);
timeval_subtract(&tvElapsedTotal, &tvEndTotal, &tvBeginTotal);
ElapsedTimeTotal=tvElapsedTotal.tv_sec+ tvElapsedTotal.tv_usec/SCALETIME;
printf("ElapsedTimeTotal: %f.\n",ElapsedTimeTotal);
return 0;
}