From: Adolfo Di Mare To: Pipino Cuevas Subject: Cómo medir el tiempo ejecución de un algoritmo > Necesito una función para c++ que me dé la duración de una operación > o de algún algoritmo, ¡¡¡ pero en segundos !!! Cuando he tenido que hacer eso, lo que hago es usar las rutinas que comienzan con time(0) en #include : - http://www.cplusplus.com/ref/ctime/ El problema es que la resolución del reloj no es suficiente para determinar el tiempo transcurrido. El truco es ejecutar el algoritmo millones de veces: #include /// Mide el tiempo que toma ejecutar el \c Algoritmo(...) /// un total de \c N veces. time_t Duracion(long N) { time_t ahora; time_t despues; ahora = time(0); for (long i=0; i < N; ++i) { Algoritmo(...); } despues = time(0); return difftime ( despues, ahora ); } Ahora podés usar Duracion(1,000,000) para ejecutar tu algoritmo un millón de veces. El tiempo transcurrido lo obtenés por división. [Con plantillas queda mejor todo esto, pues Algoritmo(...) puede implementarse como el operator()() de la clase que se recibe como parámetro]. Esto de medir el tiempo de ejecución no es comida de trompudo, como lo explica el artículo "Empirical Analysis Of Algorithms Is Easy (Or Is It) [Sanders 2001]": - http://www.google.com/search?num=100&q=empirical+analysis+algorithms+easy+sanders Además, podés bucear Google: - http://www.google.com/search?as_q=timing+c%2B%2B&num=100 Acordate que el sistema operativo no le da uso exclusivo del CPU a tu programa, por lo que las mediciones que hagás estarán un toque sesgadas...