Crono en C++

La biblioteca Chrono se utiliza para gestionar la fecha y la hora. Esta biblioteca fue diseñada para lidiar con el hecho de que los temporizadores y los relojes pueden ser diferentes en diferentes sistemas y, por lo tanto, para mejorar con el tiempo en términos de precisión. Lo único de Chrono es que proporciona un concepto de precisión neutral al separar la duración y el punto de tiempo («punto de tiempo») de relojes específicos.

crono es el nombre de un encabezado y también de un subespacio de nombres: Todos los elementos en este encabezado (excepto las especializaciones common_type) no están definidos directamente bajo el espacio de nombres std (como la mayoría de la biblioteca estándar) sino bajo std:: espacio de nombres crono .
Los elementos de este encabezado tratan del tiempo. Esto se hace principalmente por medio de tres conceptos:

Duración

Un objeto de duración expresa un lapso de tiempo por medio de un conteo como un minuto, dos horas o diez milisegundos. Por ejemplo, «42 segundos» podría representarse por una duración que consta de 42 tics de una unidad de tiempo de 1 segundo.

// C++ program to illustrate the utility 
// function duration::count
#include <iostream> 
#include <chrono>    
  
int main ()
{
    using namespace std::chrono;
    // std::chrono::milliseconds is an 
    // instantiation of std::chrono::duration:- 1 second
    milliseconds mil(1000); 
      
    mil = mil*60;
      
    std::cout << "duration (in periods): ";
    std::cout << mil.count() << " milliseconds.\n";
      
    std::cout << "duration (in seconds): ";
    std::cout << (mil.count() * milliseconds::period::num / 
                               milliseconds::period::den);
    std::cout << " seconds.\n";
  
    return 0;
}

Producción:

duration (in periods): 60000 milliseconds.
duration (in seconds): 60 seconds.

Reloj

Un reloj consta de un punto de partida (o época) y una tasa de tic. Por ejemplo, un reloj puede tener una época del 22 de febrero de 1996 y marcar cada segundo. C++ define tres tipos de reloj:

  • system_clock -Es la hora actual según el sistema (reloj normal que vemos en la barra de herramientas de la computadora). Está escrito como- std::chrono::system_clock
  • reloj_estacionario -Es un reloj monótono que nunca se ajustará. Va a un ritmo uniforme. Está escrito como- std::chrono::steady_clock
  • reloj_de_alta_resolución : proporciona el período de tictac más pequeño posible. Está escrito como-std::crono::alta_resolución_reloj

Punto de tiempo

Un objeto time_point expresa un punto en el tiempo relativo a la época de un reloj. Internamente, el objeto almacena un objeto de un tipo de duración y usa el tipo Reloj como referencia para su época.

// C++ program to illustrate time point
// and system clock functions
#include <iostream>
#include <chrono>
#include <ctime>
  
// Function to calculate
// Fibonacci series
long fibonacci(unsigned n)
{
    if (n < 2) return n;
    return fibonacci(n-1) + fibonacci(n-2);
}
  
int main()
{
    // Using time point and system_clock
    std::chrono::time_point<std::chrono::system_clock> start, end;
  
    start = std::chrono::system_clock::now();
    std::cout << "f(42) = " << fibonacci(42) << '\n';
    end = std::chrono::system_clock::now();
  
    std::chrono::duration<double> elapsed_seconds = end - start;
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);
  
    std::cout << "finished computation at " << std::ctime(&end_time)
              << "elapsed time: " << elapsed_seconds.count() << "s\n";
}

Producción:

f(42) = 267914296
finished computation at Wed Jan  4 05:13:48 2017
elapsed time: 2.14538s

Este artículo es una contribución de Shambhavi Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *