Deseo calcular el tiempo en milisegundos tomado por la ejecución de alguna parte de mi programa. He estado buscando en línea, pero no hay mucha información sobre este tema. ¿Alguno de ustedes sabe cómo hacer esto?Cálculo del tiempo transcurrido en un programa C en milisegundos
Respuesta
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, puede simplemente 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ápido cuando lo necesite.
La función gettimeofday
devuelve el tiempo con una precisión de microsegundos (si la plataforma puede admitir que, por supuesto):
El gettimeofday() la función se obtener la hora actual, expresado como segundos y microsegundos desde la Época, y la almacena en la estructura timeval apuntada por tp. La resolución del reloj del sistema es no especificada.
'gettimeofday' isn No es bueno para medir el tiempo transcurrido entre dos eventos, porque el reloj de la hora del sistema puede cambiarse entre los eventos (por ejemplo, mediante una actualización de NTP o simplemente acción del administrador). (A veces * es * lo mejor disponible, sin embargo). – caf
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.
Particularmente, el reloj 'CLOCK_MONOTONIC', si el sistema en el que se está ejecutando lo admite (' sysconf (_SC_MONOTONIC_CLOCK)> 0'). – caf
mejor manera de responder es con un ejemplo:
#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/* 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;
}
- 1. Tiempo transcurrido de ejecución de un programa en C
- 2. ¿Cómo puedo obtener el tiempo transcurrido en milisegundos en Ruby?
- 3. Medición del tiempo transcurrido en python
- 4. tiempo transcurrido en Qt
- 5. Obtenga tiempo en milisegundos usando C#
- 6. C# transcurrido en un temporizador?
- 7. rápido tiempo transcurrido en Linux
- 8. ¿Cómo obtener el tiempo transcurrido en milisegundos en el script bash?
- 9. Obteniendo el tiempo transcurrido (Objective-c)
- 10. Manipulación y almacenamiento del tiempo transcurrido
- 11. Cálculo del tiempo por el código C++
- 12. Tiempo de C++ chrono system en milisegundos, operaciones de tiempo
- 13. Cálculo del tiempo de la Época futura en C#
- 14. C# temporización de milisegundos
- 15. localizando el tiempo transcurrido
- 16. actionscript 3 cómo hacer un seguimiento del tiempo transcurrido?
- 17. Cálculo del tiempo en Python (datetime.timedelta?)
- 18. Powershell mostrar el tiempo transcurrido
- 19. Calcular el tiempo transcurrido en php
- 20. Evento transcurrido del temporizador que se activa dos veces en el programa de línea de comandos C#
- 21. Mide el tiempo transcurrido entre dos MotionEvents en Android
- 22. C - tiempo de cálculo de medición
- 23. Tiempo de ejecución variable de un programa en C
- 24. cálculo de tiempo de pitón (mili segundos)
- 25. ¿Cómo medir el tiempo en milisegundos usando ANSI C?
- 26. Obtenga el tiempo transcurrido desde el inicio de la aplicación
- 27. Encontrar el tiempo en milisegundos utilizando VBScript
- 28. ¿Mejor forma de obtener tiempo en milisegundos en javascript?
- 29. Averigüe cuántos milisegundos tiene que ejecutar un programa de C# en su depurador
- 30. Cálculo de milisegundos de la época
reetiquetado más acorde con la convención. – dmckee
hm ... no respondí esta pregunta hace una semana: http://stackoverflow.com/questions/1444428/time-stamp-in-the-c-programming-language/1445808#1445808 – Christoph