Crono en C++

és una capçalera C++ que proporciona una col·lecció de tipus i funcions per treballar amb el temps. Forma part de la biblioteca de plantilles estàndard (STL) de C++ i s'inclou a C++ 11 i versions posteriors.

proporciona tres tipus principals de rellotges: system_clock steady_clock i high_resolution_clock. Aquests rellotges s'utilitzen per mesurar el temps de diverses maneres.

system_clock representa el rellotge de paret en temps real de tot el sistema. Es veu afectat pels ajustos de temps del sistema.
steady_clock representa un rellotge que augmenta monòtonament que no es veu afectat pels canvis en l'hora del sistema.
high_resolution_clock és el rellotge amb el període de tick més curt disponible al sistema.

també ofereix una col·lecció de tipus de durada inclosa la durada que es pot utilitzar per representar una durada de temps. Rep és el tipus de representació (com int o long) i Period és la relació de la durada (com ara nanosegons o segons).
A més proporciona una col·lecció de tipus de punt de temps inclòs time_point que es pot utilitzar per representar un punt en el temps. Clock és el tipus de rellotge (com ara system_clock) i Duration és el tipus de durada (com ara segons)

La biblioteca Chrono s'utilitza per tractar la data i l'hora. Aquesta biblioteca va ser dissenyada per tractar el fet que els temporitzadors i els rellotges poden ser diferents en diferents sistemes i així millorar amb el temps en termes de precisió. L'única cosa del crono és que proporciona a concepte de precisió neutre separant la durada i el punt de temps (punt de temps) dels rellotges específics. chrono és el nom d'una capçalera i també d'un subespai de noms: tots els elements d'aquesta capçalera (excepte les especialitzacions common_type) no es defineixen directament sota l'espai de noms std (com la majoria de la biblioteca estàndard), sinó sota el espai de noms std::chrono . Els elements d'aquesta capçalera tracten el temps. Això es fa principalment mitjançant tres conceptes:

Durada

Un objecte de durada expressa un interval de temps mitjançant un recompte com un minut dues hores o deu mil·lisegons. Per exemple, "42 segons" es podria representar per una durada que consta de 42 ticks d'una unitat de temps d'1 segon. 

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  ;   }   

Sortida:

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

Rellotge

Un rellotge consta d'un punt de partida (o època) i una taxa de tictac. Per exemple, un rellotge pot tenir una època del 22 de febrer de 1996 i marcar cada segon. C++ defineix tres tipus de rellotge:

    rellotge_sistema -És l'hora actual segons el sistema (rellotge normal que veiem a la barra d'eines de l'ordinador). S'escriu com- std::chrono::system_clock rellotge_constante -És un rellotge monòton que no s'ajustarà mai. Va a un ritme uniforme. S'escriu as- std::chrono::steady_clock rellotge_alta_resolució - Proporciona el període més petit possible. S'escriu com-std::chrono::high_resolution_clock

Punt de temps

Un objecte time_point expressa un punt en el temps relatiu a l'època d'un rellotge. Internament, l'objecte emmagatzema un objecte d'un tipus de durada i utilitza el tipus Clock com a referència per a la seva època.  

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  ;;   }   

Sortida:

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

És important tenir en compte que la precisió i exactitud dels rellotges i les durades proporcionades per pot variar segons el sistema i la plataforma i sempre és una bona idea consultar la documentació de la vostra plataforma per obtenir més informació.

Crea un qüestionari