C/Visual C - Medir el tiempo de ejecucion del programa

 
Vista:

Medir el tiempo de ejecucion del programa

Publicado por David (1 intervención) el 21/10/2001 16:57:58
Tengo que hacer un programa el cual mida el tiempo de ejecucion de una subrutina, el problema es que como no tarda en ejecutarse ni un TIC de reloj me saca que el tiempo es siempre de 0 segundos, como podria introducir un retardo para medirlo? Gracias, me es urgente
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Medir el tiempo de ejecucion del programa

Publicado por Googol (255 intervenciones) el 21/10/2001 18:56:18
Meter un retardo no te servirá de nada.
Lo que puedes hacer es medir el tiempo de la ejecución de la misma rutina, pongamos, 1000 veces, y luego dividir el tiempo del resultado entre 1000.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Medir el tiempo de ejecucion del programa

Publicado por Ismael (230 intervenciones) el 21/10/2001 21:58:34
Si pones un retardo, delay() o sleep(). como conoces su duración se puede esperar que al tiempo teórico del retardo se sume el de la ejecución que tu investigas. Restas el tempo de retardo y...
Sin embargo: dado que el tiempo de ejecucíon es pequeño, ¿realmente empleas el formato de datos adecuado? Ejemplo: si trabajas con datos int, valoes cono 0.001 son cero directamente.
Un saludo

ismael
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Medir el tiempo de ejecucion del programa

Publicado por Googol (255 intervenciones) el 22/10/2001 11:03:29
Yo creo que eso no funcionará, ¿no? El problema que está teniendo es por la precisión del reloj del sistema. Cuando tú pides el tiempo o la hora al sistema, o cuando haces un sleep, puedes obtener precisión hasta de milisegundos, pero es una precisión fantasma. Realmente el reloj del sistema avanza un ciclo cada mucho más tiempo (depende de muchas cosas, pero en MS-DOS era 18.2 ciclos por segundo). Por tanto si haces algo muy rápido, puede que no haya saltado ningún ciclo durante ese tiempo, y parezca que no ha pasado tiempo.
Meter retardos supone que se tarda más por el retardo. Pero el retardo no es preciso, y, además, creo que no sirve. Si a algo que no tarda "nada" en ejecutarse le metes un retardo de 1 segundo, el resultado final será 1 segundo, y seguirás sin saber nada.

En realidad existe otra solución, que funciona en MS-DOS, pero no en Windows. Y es programar el reloj del sistema para obligarle a que sus ciclos sean más cortos. Por ejemplo, forzarle a ir a 10000 ciclos por segundo. Conseguir esto es posible, pero es un poco liosillo, y en Windows no se puede (Windows no te deja que programes el reloj, porque lo utiliza para la multitarea y es un recurso demasiado importante). A si es que lo de ejecutar el algoritmo muchas veces me parece la mejor solución.
Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar