• Domingo 15 de Diciembre de 2024, 00:56

Autor Tema:  Re: Tiempo de ejecucion  (Leído 2061 veces)

Krysstel

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Tiempo de ejecucion
« en: Jueves 20 de Febrero de 2003, 02:55 »
0
Podrian ayudarme a como crear la rutina para contar el tiempo ke tarda en ejecutar una accion el programa y despues la despliegue lo he intentado con el Clock(); pero  no aparece nada
\" OBSERVA  al Mejor, APRENDE del Mejor, SUPERA al Mejor\"

Astor

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Tiempo de ejecucion
« Respuesta #1 en: Jueves 20 de Febrero de 2003, 03:14 »
0
Si lo vas a hacer sobre DOS podes colgarte del timertick (IRQ 0 - octava posicion del vector de interrupciones) y poner la cuenta del 8254 en lo mas bajo. Asi vas apoder contar tiempos de microsegundos.
Si no sabes como hacer rutinas de atencion de interrupcion (ISR avisa o busca en google)

Quoyle

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Tiempo de ejecucion
« Respuesta #2 en: Viernes 21 de Febrero de 2003, 09:55 »
0
Para ver cuanto tiempo ha tardado en ejecutarse cierta rutina solo tienes que utilizar las funciones gettime() justo antes de empezar y justo después de acabar de ejecutar la rutina, y restando los dos tiempos obtendrás lo que necesitas.

Esta función se encuentra en time.h y creo que tambien en stdlib.h, mira en la ayuda del compilador lo que devuelve porque si no recuerdo mal es una estructura.

Suerte!!
Actual Generation oOo Quoyle oOo Remember: Free your mind

Astor

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Tiempo de ejecucion
« Respuesta #3 en: Viernes 21 de Febrero de 2003, 16:00 »
0
Voy a intentar tomar en serio tu comentario y hacerte una leve demostracion por la teoria del absurdo.
Supongamos que este muchacho quiere contar el tiempo que tarda en ejecutarse una funcion de su programa ejecutada en un... 486 DX4 100. Resumamos el problema a que el ciclo de clock es de aproximadamente 10 ns. Suponiendo que el IA32 ejecuta un ciclo de maquina cada 12 de clock, va a tardar 120 ns en ejecutarlo (seria el tiempo que tarda en ejecutar un nop).
Supongamos ahora un bloque de 30 instrucciones de duracion promedio 5 ciclos de maquina estarias tomando 150 ciclos de maquina. 120 ns * 150 ciclos= 18 us.

Explicanos como con un reloj que cuenta en pasos de a 1 segundo podrias llegar a identificar 18 us. (Si tu teoria es cierta Tag Heuer va a terminar vendiendo sus relojes en el Congo:o )

Quoyle

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Tiempo de ejecucion
« Respuesta #4 en: Lunes 24 de Febrero de 2003, 13:01 »
0
Krysstel siento no haber especificado en mi "posible" soluciön que la precisiön mäxima que obtendrïas es solo de 10^-3 sg (milisegundos).

Aparte, querïa deciros a todos que me lo pienso mucho antes de contestar a alguna duda porque no siempre estoy seguro de poder explicar correctamente la soluciön que se me ocurre.Tambiën suelo tomarme en SERIO cualquier comentario que hagan los demäs puesto que yo creo que la finalidad del foro consiste en ayudarnos entre todos y aprender al mismo tiempo.

Yo propuse esa soluciön porque Krysstel no especifica que es lo que quiere medir, y ante tal situaciön y ante varias soluciones yo siempre procuro aplicar la soluciön que me parece mäs fäcil ¿no creeis que es lo mejor?. Dado que en un lenguaje de alto nivel la ejecuciön de unas cuantas instrucciones en seguida colocan el tiempo de ejecuciön en milisegundos (sobre todo si hay acceso a disco) y existen funciones ya programadas en las librerïas, pensë que quizä serïa una buena soluciön. Bien es cierto que deberïa haber especificado la precisiön que se conseguïa en comparaciön con la soluciön Astor que mide con una precisiön 10^-6 sg (microsegundos)y que yo nunca me atreverïa a desprestigiar y de hecho no lo hice.

La proxima vez intentarë ser mas claro, yo siempre intento aprender mäs, y quizä asi la proxima vez todos podais tomarme en SERIO y no tengais que poner un ejemplo y desarrollar una demostraciön por reducciön a lo absurdo para hacer gala de vuestra sabidurïa ante el resto del foro. Aunque quizä si no hubiera sido esa la finalidad hubiera bastado con especificar que mi, siempre posible, soluciön no alcanzaba la misma precisiön que la de Astor.

Bueno, espero que de una forma u otra Krysstel consiga hacer lo que necesita, que al fin y al cabo de eso es de lo que se trata y no de demostrar lo listos que somos. Mucha suerte y siento no haber estado a la altura.
Actual Generation oOo Quoyle oOo Remember: Free your mind

Astor

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Tiempo de ejecucion
« Respuesta #5 en: Lunes 24 de Febrero de 2003, 14:41 »
0
En ningun momento mi intencion fue demostrar que estabas a tal o cual altura frente a cierta situacion. Disculpame si sentis que te desprestigie por demostrar algo por el "absurdo" pero es quiza la forma mas sencilla en que alguien pueda comprender porque no hacerlo de ese modo. Si me hubiese limitado a decir que la presicion de tu metodo era insuficiente, aunque parezca mentira, muchos no hubieran comprendido, o simplemente no se les hubiera fijado la idea del mismo modo que explicando en que consiste un ciclo de maquina y como se calcula su duracion. Nuevamente te pido disculpas si en mis animos por dar una explicacion, a mi modo de ver clara, te sentiste ofendido por mi respuesta.

Saludos desde Bs. As.