Cómo usar la librería Chrono en C++

Te contamos cómo funciona la librería Chrono de C++ con unos ejemplos y también sus principales usos.

¿Qué es la librería Chrono?

Chrono es una librería de cabecera de C++ con la que podemos trabajar con el tiempo. Podéis ver toda la información sobre ella en la página https://en.cppreference.com/w/cpp/chrono.

Vamos a ver un ejemplo de cómo utilizar esta cabecera Chrono.

#include <iostream>
#include <chrono>

int main()
{
    auto start = std::chrono::system_clock::now();
    auto end = std::chrono::system_clock::now();

    std::chrono::duration<float,std::milli> duration = end - start;

    std::cout << duration.count() << “s “ << std:endl;

    getchar();
    return = 0; 
}

Si compilamos y ejecutamos este código, nos devolverá el tiempo que ha tardado en ejecutarse el mismo.

¿Para qué sirve Chrono?

Para ver la utilidad real de esta librería de C++ vamos a ver otro ejemplo, en el que tenemos una función foo, que lo que hace es imprimir por pantalla el texto “Openwebinars”, queremos saber lo que tarda en ejecutarse la función e imprimirse ese texto en pantalla cien veces.

#include <iostream>
#include <chrono>

void foo ()
{
    for unsigned short i = 0; i < 100; ++i=;
        std::cout << “Openwebinars” << std::endl;
}

int main()
{
    auto start = std::chrono::system_clock::now();
    foo();
    auto end = std::chrono::system_clock::now();

    std::chrono::duration<float,std::milli> duration = end - start;

    std::cout << duration.count() << “s “ << std:endl;

    getchar();
    return = 0; 
}

Al ejecutarlo vemos que imprime cien veces el texto correspondiente, y lo hace en 252,75 milisegundos.

Vamos a ver el mismo ejemplo pero realizado de otra forma diferente:

#include <iostream>
#include <chrono>

struct Timer
{
    std::chrono::system_clock::time_point m_start;

    Timer()
    {
        mstart = std:chrono::system_clock::now();
}

~Timer()
{
    auto = end = std::chrono::system_clock::now();

    std::chrono::duration<float, std::milli> duration = end - m_start;

    std::cout << duration.cout() << std::endl;

}

}

void foo ()
{
    Timer t;
    for unsigned short i = 0; i < 100; ++i=;
        std::cout << “Openwebinars” << std::endl;
}

int main()
{
    foo();

    getchar();
    return = 0;
}

Al ejecutarlo vemos que realiza el mismo proceso pero en algo de menos tiempo, en este caso en 238.156 milisegundos.

El tiempo dependerá un poco del el sistema operativo en el que lo ejecutemos, si está ocupado o si el proceso en el que estamos ha ejecutado todos los ciclos de reloj que necesita. De hecho si lo ejecutamos más veces, vemos que el tiempo varía de una vez a otra.

También puede cambiar el tiempo que tarda en la ejecución si cambiamos algo en el código, y puede aumentar o disminuir.

Importancia de Chrono

Esta es la función básica de Chrono, y se puede utilizar en multitud de sitios, ya sea para eficiencia, para control de procesos, para control de hilos y cualquier cosa que podáis imaginar.

Por ejemplo, en videojuegos se puede utilizar para ver los gráficos o para saber cuánto tiempo ha pasado de un estado a otro, en este caso ejecutando una función que se irá actualizando para poder saber así el tiempo que ha pasado desde la última vez que se llamó a la misma.

Sigue aprendiendo a diseñar y asimilar patrones e interfaces para tus programas con este Curso de Patrones de diseño e interfaces en C++ 

curso-cpp-interfaces

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

También te puede interesar...

Lenguajes de Programación

Qué es Scope en C++

05 Septiembre 2018 Antonio José Checa Bustos
Introducción a C++

Curso de introducción a C++

1 hora y 56 minutos · curso

  • Backend
Lenguajes de Programación

Por qué aprender C++

06 Septiembre 2018 Antonio José Checa Bustos

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información.