OpenWebinars

Lenguajes de Programación

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

Concoe a fondo los principales usos de Chrono de C++  y cómo funciona con unos ejemplos prácticos,.

Antonio José Checa Bustos

Antonio José Checa Bustos

EXPERTO en C++

Lectura 1 minutos

Publicado el 29 de octubre de 2018

Compartir

    Tabla de contenidos

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.

Compartir este post

También te puede interesar

Qué es Scope en C++
Blog

Qué es Scope en C++

Cuando estamos desarrollando código, es muy importante saber cual es el alcance donde una variable puede utilizarse para que nuestro código funcione...

Antonio José Checa Bustos
Icono de la tecnología
Curso

Introducción a C++

Principiante
1 h. y 56 min.

¿Quieres aprender a programar en C++? Con este curso de introducción aprenderás desde cero este lenguaje de programación...

Antonio José Checa Bustos
4.1
Por qué aprender C++
Blog

Por qué aprender C++

Si están pensando en aprender a programar en C++, &nbsp;te contamos los motivos por los que aprender C++ como lenguaje de programación....

Antonio José Checa Bustos