dudas sobre la funcion time

juanjo
02 de Febrero del 2006
Hola a todos:
estoy en 1º de informatica y tenia una duda sobre programacion en C. resuta que me han mandado un trabajo en el que un programa hace una ordenacion y tengo k averiguar cuanto tarda en realizarla. No se si es con la funcion time pero no la he dado.Si me podeis decir como se coloca o con qué lo puedo averiguar...
muchas gracias.

hiei
02 de Febrero del 2006
La funcion time (a mi juicio) no es algo muy preciso como lo que necesitas (estamos hablando del orden de fracciones de segundo si ablamos de cuanto tarda un algoritmo) La forma "estandar" de hacer esto (en realidad se usa un programa especial que se llama genericamente "profile" que hace estas mediciones... pero bue...) es usando la funcion clock: http://www.cl.cam.ac.uk/cgi-bin/manpage?3+clock

Entonces el codigo quedaria:
{
clock_t t1, t2, tdiff;
t1 = clock();
proceso(); /* Aqui se llama al proceso a medir */
t2 = clock();
tdiff = t2-t1; /* En tdiff queda los ticks que tardo */
}

Para determinar el tiempo (en segundos) divides este valor (tdiff) por la constante CLOCKS_PER_SEC asi:

double segundos = ((double)tdiff)/CLOCKS_PER_SEC;

No olvides lo de (double) porque sino, trunca el numero y siempre dara cero...