Quiero saber por cuánto tiempo (aproximadamente) se ejecuta algún bloque de código. Algo como esto:¿Cómo mido el tiempo en C?
startStopwatch();
// do some calculations
stopStopwatch();
printf("%lf", timeMesuredInSeconds);
¿Cómo?
Quiero saber por cuánto tiempo (aproximadamente) se ejecuta algún bloque de código. Algo como esto:¿Cómo mido el tiempo en C?
startStopwatch();
// do some calculations
stopStopwatch();
printf("%lf", timeMesuredInSeconds);
¿Cómo?
Usted puede utilizar el método clock
en time.h
Ejemplo:
clock_t start = clock();
/*Do something*/
clock_t end = clock();
float seconds = (float)(end - start)/CLOCKS_PER_SEC;
Usted puede utilizar la biblioteca time.h, específicamente los time y difftime funciones:
/* difftime example */
#include <stdio.h>
#include <time.h>
int main()
{
time_t start,end;
double dif;
time (&start);
// Do some calculation.
time (&end);
dif = difftime (end,start);
printf ("Your calculations took %.2lf seconds to run.\n", dif);
return 0;
}
(Ejemplo adaptado de la página web difftime vinculada anteriormente.)
Tenga en cuenta que este método solo puede dar segundos de precisión: time_t
registra los segundos desde el UNIX epoch (1 de enero de 1970).
Esto proporciona solo segundos de precisión. Y su ejemplo en realidad no usa '
Lo sentimos, la 'c' era un error tipográfico: la biblioteca ctime se define en 'time.h'. Y sí, solo da segundos de precisión. Considerando que el cartel decía "aproximadamente", lo consideré suficiente.Editaré mi respuesta para incluir el hecho de que solo dará segundos de nivel de precisión, si lo desea. – Stephen
Si usted no necesita resolución fantástica, se puede usar GetTickCount(): http://msdn.microsoft.com/en-us/library/ms724408(VS.85).aspx (Si se trata de algo que no sean sus propios diagnósticos simples, a continuación, tenga en cuenta que este número puede envolver alrededor, por lo que necesita para manejar eso con un poco de aritmética).
QueryPerformanceCounter es otra opción razonable. (También se describe en MSDN)
Usaría las funciones QueryPerformanceCounter y QueryPerformanceFrequency de la API de Windows. Llame al anterior antes y después del bloque y reste (actual − anterior) para obtener el número de "tics" entre las instancias. Divida esto por el valor obtenido por la última función para obtener la duración en segundos.
GetTickCount().
#include <windows.h>
void MeasureIt()
{
DWORD dwStartTime = GetTickCount();
DWORD dwElapsed;
DoSomethingThatYouWantToTime();
dwElapsed = GetTickCount() - dwStartTime;
printf("It took %d.%3d seconds to complete\n", dwElapsed/1000, dwElapsed - dwElapsed/1000);
}
¿Cuál es su plataforma? – pmod
@Pmod ¿Qué quiere decir con plataforma? Mi sistema operativo es Windows. – snakile
¿Qué resolución desea lograr y cuánto sobrecarga acumulada está dispuesto a tolerar? –