Chrono en C++

est un en-tête C++ qui fournit une collection de types et de fonctions pour fonctionner avec le temps. Il fait partie de la bibliothèque de modèles standard C++ (STL) et est inclus dans C++11 et les versions ultérieures.

fournit trois principaux types d'horloges : system_clock steady_clock et high_resolution_clock. Ces horloges sont utilisées pour mesurer le temps de différentes manières.

system_clock représente l'horloge murale en temps réel à l'échelle du système. Il est affecté par les ajustements horaires du système.
steady_clock représente une horloge à augmentation monotone qui n'est pas affectée par les modifications apportées à l'heure du système.
high_resolution_clock est l'horloge avec la période de tick la plus courte disponible sur le système.

fournit également une collection de types de durée, y compris la durée qui peut être utilisé pour représenter une durée. Rep est le type de représentation (comme int ou long) et Period est le rapport de la durée (comme les nanosecondes ou les secondes).
En plus fournit une collection de types de points temporels, notamment time_point qui peut être utilisé pour représenter un moment donné. Clock est le type d'horloge (tel que system_clock) et Duration est le type de durée (tel que secondes)

La bibliothèque Chrono est utilisée pour gérer la date et l'heure. Cette bibliothèque a été conçue pour gérer le fait que les minuteries et les horloges peuvent être différentes selon les systèmes et ainsi s'améliorer au fil du temps en termes de précision. La particularité du chrono est qu'il fournit un concept neutre en termes de précision en séparant la durée et le moment (timepoint) des horloges spécifiques. chrono est le nom d'un en-tête et aussi d'un sous-espace de noms : Tous les éléments de cet en-tête (sauf les spécialisations common_type) ne sont pas définis directement sous l'espace de noms std (comme la plupart des bibliothèques standards) mais sous le std :: espace de noms chrono . Les éléments de cet en-tête traitent du temps. Cela se fait principalement au moyen de trois concepts :

Durée

Un objet de durée exprime une période de temps au moyen d'un décompte comme une minute, deux heures ou dix millisecondes. Par exemple, « 42 secondes » pourrait être représenté par une durée composée de 42 ticks d'une unité de temps d'une seconde. 

CPP
   // C++ program to illustrate the utility    // function duration::count   #include       #include      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     &  lt  ;  &  lt  ;     &  quot  ;  duration     (  in     periods  )  :     &  quot  ;;      std  ::  cout     &  lt  ;  &  lt  ;     mil  .  count  ()     &  lt  ;  &  lt  ;     &  quot  ;     milliseconds  .    n  &  quot  ;;          std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;  duration     (  in     seconds  )  :     &  quot  ;;      std  ::  cout     &  lt  ;  &  lt  ;     (  mil  .  count  ()     *     milliseconds  ::  period  ::  num     /         milliseconds  ::  period  ::  den  );      std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;     seconds  .    n  &  quot  ;;      return     0  ;   }   

Sortir:

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

Horloge

Une horloge se compose d’un point de départ (ou époque) et d’un tick rate. Par exemple, une horloge peut avoir une époque du 22 février 1996 et un tic-tac toutes les secondes. C++ définit trois types d'horloge :

    horloge_système -C'est l'heure actuelle selon le système (horloge régulière que l'on voit sur la barre d'outils de l'ordinateur). Il s'écrit comme-std::chrono::system_clock stable_clock -C'est une horloge monotone qui ne sera jamais ajustée. Elle va à une vitesse uniforme. Il s'écrit comme-std::chrono::steady_clock horloge_haute_résolution - Il fournit la période de tick la plus courte possible. Il est écrit comme-std::chrono::high_resolution_clock

Point temporel

Un objet time_point exprime un point dans le temps par rapport à l’époque d’une horloge. En interne, l'objet stocke un objet d'un type durée et utilise le type Clock comme référence pour son époque.  

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

Sortir:

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

Il est important de noter que la précision et l'exactitude des horloges et des durées fournies par peut varier en fonction du système et de la plate-forme et c'est toujours une bonne idée de consulter la documentation de votre plate-forme pour plus d'informations.

Créer un quiz