Midiendo el tiempo de una rutina

Solo disponible en BuenasTareas
  • Páginas : 4 (789 palabras )
  • Descarga(s) : 0
  • Publicado : 25 de abril de 2010
Leer documento completo
Vista previa del texto
Midiendo el tiempo de una rutina
Leí por allí que aquellas personas que nunca se preocuparon por la velocidad con la que corren sus programas, son perfectos candidatos para jugar con JAVA, noutilizo JAVA, así que no puedo sustentarlo. Calcular el tiempo de CPU que toma una rutina es simple:
  

Capturamos el valor del reloj justo antes de realizar la rutina (t_ini), Llamamos a la rutinaen cuestión. Capturamos nuevamente el valor del reloj (t_fin). nos da el total de tiempo que tomó:

La diferencia: t_fin - t_ini

1) hacer la llamada a la rutina, 2) que esta haga su trabajo, 3)que devuelva el resultado. Bien, pero entonces, Y más importante aún, ¿qué función usar para tomar el tiempo del reloj? ¿qué precisión obtenemos con dicha función?

Para capturar el valor del tiempopodemos utilizar la rutina clock(), que devuelve el tiempo aproximado de CPU que transcurrió desde que nuestro programa fue iniciado, dicho tiempo representado en un valor de tipo clock_t: un valorentero que indica una cantidad de "tics" de reloj. La precisión que tenemos con dicha rutina es de CLOCKS_PER_SEC (tics de reloj por segundo), lo que significa que por cada segundo que pasa, la funciónclock() nos devolverá CLOCKS_PER_SEC unidades más que el valor anterior. En MinGW, CLOCKS_PER_SEC es igual a 1000, pero es mejor no fiarse de esto, ya que en otras plataformas dicho valor varía.Inclusive, según POSIX, la constante CLOCKS_PER_SEC debería ser 1000000.

Veamos algo de código:
#include #include int main(int argc, char *argv[]) { clock_t t_ini, t_fin; double secs; t_ini = clock();/* ...hacer algo... */ t_fin = clock(); secs = (double)(t_fin - t_ini) / CLOCKS_PER_SEC; printf("%.16g milisegundos\n", secs * 1000.0); return 0; }

Con esto podemos medir cuántos milisegundosdemoró "hacer algo". Todo parece bien, hasta que nos damos cuenta de dos grandes problemas: 1. Tomar una medida única y aislada es igual que tomar un número completamente aleatorio y mostrarlo (no es...
tracking img