Chrono in C++

is een C++-header die een verzameling typen en functies biedt om met de tijd te werken. Het maakt deel uit van de C++ Standard Template Library (STL) en is opgenomen in C++11 en latere versies.

biedt drie hoofdtypen klokken: system_clock steady_clock en high_resolutie_clock. Deze klokken worden op verschillende manieren gebruikt om de tijd te meten.

system_clock vertegenwoordigt de systeembrede realtime wandklok. Het wordt beïnvloed door de tijdaanpassingen van het systeem.
steady_clock vertegenwoordigt een monotoon toenemende klok die niet wordt beïnvloed door veranderingen in de systeemtijd.
high_resolutie_klok is de klok met de kortste tikperiode die beschikbaar is op het systeem.

biedt ook een verzameling duurtypen, inclusief duur die kan worden gebruikt om een ​​tijdsduur weer te geven. Rep is het representatietype (zoals int of long) en Period is de verhouding van de duur (zoals nanoseconden of seconden).
Aanvullend biedt een verzameling tijdpunttypen, waaronder time_point die gebruikt kan worden om een ​​tijdstip weer te geven. Klok is het kloktype (zoals systeemklok) en Duur is het duurtype (zoals seconden)

Chronobibliotheek wordt gebruikt om met datum en tijd om te gaan. Deze bibliotheek is ontworpen om rekening te houden met het feit dat timers en klokken op verschillende systemen verschillend kunnen zijn en zo in de loop van de tijd qua nauwkeurigheid te verbeteren. Het unieke aan chrono is dat het een precisie-neutraal concept door duur en tijdstip (tijdpunt) te scheiden van specifieke klokken. chrono is de naam van een header en ook van een subnaamruimte: alle elementen in deze header (behalve de common_type-specialisaties) worden niet direct onder de std-naamruimte gedefinieerd (zoals de meeste standaardbibliotheek) maar onder de std::chrono naamruimte . De elementen in deze kop gaan over tijd. Dit gebeurt voornamelijk aan de hand van drie concepten:

Duur

Een duurobject drukt een tijdspanne uit door middel van een telling zoals een minuut, twee uur of tien milliseconden. '42 seconden' zou bijvoorbeeld kunnen worden weergegeven door een duur bestaande uit 42 tikken van een tijdseenheid van 1 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  ;   }   

Uitgang:

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

Klok

Een klok bestaat uit een startpunt (of tijdperk) en een tiksnelheid. Een klok kan bijvoorbeeld een tijdperk van 22 februari 1996 hebben en elke seconde tikken. C++ definieert drie kloktypen:

    systeemklok -Het is de huidige tijd volgens het systeem (gewone klok die we zien op de werkbalk van de computer). Het is geschreven asstd::chrono::system_clock vaste_klok -Het is een monotone klok die nooit zal worden aangepast. Hij loopt met een uniform tempo. Het is geschreven asstd::chrono::steady_clock hoge_resolutie_klok - Het biedt de kleinst mogelijke tick-periode. Het is geschreven als-std::chrono::high_resolutie_clock

Tijdpunt

Een time_point-object drukt een tijdstip uit ten opzichte van het tijdperk van een klok. Intern slaat het object een object van een duurtype op en gebruikt het Kloktype als referentie voor zijn tijdperk.  

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

Uitgang:

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

Het is belangrijk op te merken dat de precisie en nauwkeurigheid van de klokken en tijdsduur worden geleverd door kan variëren afhankelijk van het systeem en platform en het is altijd een goed idee om de documentatie van uw platform te raadplegen voor meer informatie.

Quiz maken