Cálculo del tiempo transcurrido en un progtwig C en milisegundos

Quiero calcular el tiempo en milisegundos tomado por la ejecución de alguna parte de mi progtwig. He estado buscando en línea, pero no hay mucha información sobre este tema. ¿Alguno de ustedes sabe cómo hacer esto?

La mejor manera de responder es con un ejemplo:

#include  #include  #include  #include  /* 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); } void timeval_print(struct timeval *tv) { char buffer[30]; time_t curtime; printf("%ld.%06ld", tv->tv_sec, tv->tv_usec); curtime = tv->tv_sec; strftime(buffer, 30, "%m-%d-%Y %T", localtime(&curtime)); printf(" = %s.%06ld\n", buffer, tv->tv_usec); } int main() { struct timeval tvBegin, tvEnd, tvDiff; // begin gettimeofday(&tvBegin, NULL); timeval_print(&tvBegin); // lengthy operation int i,j; for(i=0;i<999999L;++i) { j=sqrt(i); } //end gettimeofday(&tvEnd, NULL); timeval_print(&tvEnd); // diff timeval_subtract(&tvDiff, &tvEnd, &tvBegin); printf("%ld.%06ld\n", tvDiff.tv_sec, tvDiff.tv_usec); return 0; } 

Otra opción (al menos en algunos UNIX) es clock_gettime y funciones relacionadas. Estos permiten el acceso a varios relojes en tiempo real y puede seleccionar uno de los de mayor resolución y descartar la resolución que no necesita.

La función gettimeofday devuelve el tiempo con una precisión de microsegundos (si la plataforma puede soportar eso, por supuesto):

La función gettimeofday () obtendrá la hora actual, expresada como segundos y microsegundos desde Epoch, y la almacenará en la estructura timeval apuntada por tp. La resolución del reloj del sistema no está especificada.

Las bibliotecas C tienen una función que le permite obtener la hora del sistema. Puede calcular el tiempo transcurrido después de capturar las horas de inicio y finalización.

La función se llama gettimeofday () y puede consultar la página de manual para averiguar qué incluir y cómo usarla.

En Windows, puedes hacer esto:

 DWORD dwTickCount = GetTickCount(); // Perform some things. printf("Code took: %dms\n", GetTickCount() - dwTickCount); 

No es la solución más general / elegante, pero agradable y rápida cuando la necesita.