¿Necesitas medir tiempos de ejecución y no sabes cómo?
Has dado con el blog adecuado ;)
Si no tienes mucho tiempo puedes copiar directamente el código que está al final para salir del paso pero, eh, no te acostumbres a copiar y pegar. Es bueno ver qué y cómo programan los demás pero tienes que intentar entenderlo.
En primer lugar aclarar que utilizo la biblioteca chrono incluida en el estándar C++11. Para poder usarla tienes que hacer dos cosas:
- Añadir ' #import <chrono>
' al inicio de tu código. - Añadir el flag ' -std=c++0x ' a la hora de compilar.
Ya sabes cómo añadirla, así que vamos al lío.
Tienes toda la documentación aquí (enlace) por si quieres consultar otras funciones. Yo me voy a centrar en 'high_definition_clock'.
En primer lugar tienes que añadir estas dos líneas de código que te permitirán ahorrarte escribir 'std::chrono::' antes de llamar a métodos u objetos dentro del ámbito de la biblioteca chrono.
Posteriormente se calcula el intervalo de tiempo y se almacena en una variable de tipo double:
using namespace std; using namespace std::chrono;A continuación crea dos variables que contendrán el tiempo antes y después de la ejecución:
double time; duration<double> interval; high_resolution_clock::time_point start, end; start = high_resolution_clock::now(); // Función que quieras medir. end = high_resolution_clock::now();
interval = duration_castPara ahorrarte tiempo puedes usar el objeto Clock que he implementado y que es de código libre (está en GitHub y lo muestro a continuación). Para usarlo tienes, de nuevo>(end - start); time = interval.count();
- Copias el código dentro de tu programa. (Que no se te olvide incluir la bilbioteca chrono)
- Descargarte el archivo e incluirlo con '#include "clock.hpp"'.
En ambos casos tendrás que añadir el flag que mencioné al principio cuando compiles, '-std=c++0x'. Un simple ejemplo de uso:
Clock my_clock; double time; my_clock.start(); // Lo que quieras medir. time = my_clock.now();
Fácil, ¿Verdad?
Aquí puedes ver/descargar el código al completo: ¡Saludos!