[ Foro de C++ ]

Medir tiempos en C++

10-Nov-2015 11:25
Invitado (Tiempos)
2 Respuestas

¿Cómo puedo medir en C++ el tiempo que tarda en procesarse una función?


13-Nov-2015 20:30
Invitado (deo)

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++!!)


13-Nov-2015 20:49
Nacho Cabanes (+31)

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.)