Chrono C++

yra C++ antraštė, kurioje pateikiama tipų ir funkcijų rinkinys, skirtas dirbti su laiku. Tai yra C++ standartinės šablonų bibliotekos (STL) dalis ir įtraukta į C++11 ir vėlesnes versijas.

pateikia tris pagrindinius laikrodžių tipus: system_clock steady_clock ir high_resolution_clock. Šie laikrodžiai naudojami laikui matuoti įvairiais būdais.

system_clock reiškia visos sistemos realaus laiko sieninį laikrodį. Tam įtakos turi sistemos laiko koregavimai.
steady_clock reiškia monotoniškai didėjantį laikrodį, kuriam įtakos neturi sistemos laiko pokyčiai.
high_resolution_clock yra laikrodis su trumpiausiu tikėjimo periodu sistemoje.

taip pat pateikia trukmės tipų rinkinį, įskaitant trukmę kurį galima naudoti laiko trukmei pavaizduoti. Rep yra vaizdavimo tipas (pvz., int arba long), o periodas yra trukmės santykis (pvz., nanosekundės arba sekundės).
Papildomai pateikia laiko taškų tipų rinkinį, įskaitant laiko_tašką kurį galima naudoti laiko momentui pavaizduoti. Laikrodis yra laikrodžio tipas (pvz., system_clock), o Trukmė yra trukmės tipas (pvz., sekundės).

Chrono biblioteka naudojama datai ir laikui tvarkyti. Ši biblioteka buvo sukurta siekiant susidoroti su faktu, kad laikmačiai ir laikrodžiai įvairiose sistemose gali skirtis, ir laikui bėgant tobulinti tikslumą. Unikalus chrono dalykas yra tas, kad jis suteikia a tikslumo ir neutralumo koncepcija, atskiriant trukmę ir laiko tašką (laiko tašką) nuo konkrečių laikrodžių. chrono yra antraštės ir antraštės pavadinimas: visi šios antraštės elementai (išskyrus bendrojo tipo specializacijas) yra apibrėžti ne tiesiogiai std vardų srityje (kaip ir dauguma standartinės bibliotekos), o pagal std::chrono vardų erdvė . Šios antraštės elementai susiję su laiku. Tai daugiausia daroma naudojant tris sąvokas:

Trukmė

Trukmės objektas išreiškia laiko tarpą skaičiuodamas, pavyzdžiui, minutę dvi valandas arba dešimt milisekundžių. Pavyzdžiui, „42 sekundės“ gali būti pavaizduotos trukme, kurią sudaro 42 1 sekundės laiko vieneto žymės. 

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

Išvestis:

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

Laikrodis

Laikrodis susideda iš pradžios taško (arba epochos) ir tiksėjimo greičio. Pavyzdžiui, laikrodis gali turėti 1996 m. vasario 22 d. epochą ir tiksėti kas sekundę. C++ apibrėžia tris laikrodžių tipus:

    sistemos_laikrodis -Tai dabartinis laikas pagal sistemą (įprastas laikrodis, kurį matome kompiuterio įrankių juostoje). Jis parašytas kaip-std::chrono::system_clock pastovus_laikrodis - Tai monotoniškas laikrodis, kuris niekada nebus reguliuojamas. Jis veikia vienodu greičiu. Jis parašytas kaip-std::chrono::steady_clock didelės_raiškos_laikrodis - Tai suteikia mažiausią galimą tikėjimo laikotarpį. Jis parašytas kaip-std::chrono::high_resolution_clock

Laiko taškas

Objektas „time_point“ išreiškia laiko tašką, palyginti su laikrodžio epocha. Viduje objektas saugo trukmės tipo objektą ir naudoja Laikrodžio tipą kaip savo epochos nuorodą.  

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

Išvestis:

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

Svarbu atkreipti dėmesį į tai, kad laikrodžių ir trukmės tikslumas ir tikslumas gali skirtis priklausomai nuo sistemos ir platformos, todėl visada naudinga peržiūrėti platformos dokumentaciją, kad gautumėte daugiau informacijos.

Sukurti viktoriną