[ Foro de C++ ]
¿Cómo puedo medir en C++ el tiempo que tarda en procesarse una función?
Que tal algo como:
int t0 = Time.getTime(); # marcar inicio crono
funcion(); # ejecutar aquí la función
int t1 = Time.getTime(); # marcar final crono
int milisegundos_totales = t1 - t0;
Nota: No recuerdo los detalles de clases como Date o Time;
pero creo que será algo similar a eso, o algo como
Time time = new Time();
t0 = time.now();
(siento no poder probarlo para dar mas detalles, pero ahora ya no uso C++!!)
C++11 incluye una clase "chrono" que permite un cronómetro de alta precisión, pero que puede no estar disponible en todos los compiladores, ya que no todos siguen ese estándar aún; la alternativa "antigua" y que funciona correctamente en todos los sistemas tiene sólo precisión de un segundo, y es ésta:
time_t instanteInicial, instanteFinal;
instanteInicial = time(0);
...
instanteFinal = time(0);
cout << "Segundos empleados: " << instanteFinal - instanteInicial << endl;
(Necesitarás un #include <ctime>).
El equivalente con C++11 (si tu sistema lo permite) sería:
std::chrono::time_point<std::chrono::system_clock> instanteInicial, instanteFinal;
instanteInicial= std::chrono::system_clock::now();
...
instanteFinal = std::chrono::system_clock::now();
std::chrono::duration<double> segundos = instanteFinal-instanteInicial;
cout << "Segundos empleados: " << segundos << endl;
(Necesitarás un #include <chrono>).
Y no estoy de acuerdo con la respuesta de "deo". Hasta donde yo conozco, no existe ninguna clase Time en C++ que sea portable entre plataformas.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)