Chrono v C++

je hlavička C++, ktorá poskytuje kolekciu typov a funkcií na prácu s časom. Je súčasťou C++ Standard Template Library (STL) a je súčasťou C++11 a novších verzií.

poskytuje tri hlavné typy hodín: system_clock steady_clock a high_resolution_clock. Tieto hodiny sa používajú na meranie času rôznymi spôsobmi.

system_clock predstavuje nástenné hodiny v reálnom čase pre celý systém. Je to ovplyvnené úpravami času systému.
steady_clock predstavuje monotónne rastúce hodiny, ktoré nie sú ovplyvnené zmenami systémového času.
high_resolution_clock sú hodiny s najkratšou dobou tikania, ktorá je v systéme k dispozícii.

tiež poskytuje kolekciu typov trvania vrátane trvania ktoré možno použiť na vyjadrenie trvania času. Rep je typ reprezentácie (napríklad int alebo long) a Period je pomer trvania (napríklad nanosekundy alebo sekundy).
Okrem toho poskytuje kolekciu typov časových bodov vrátane time_point ktoré možno použiť na vyjadrenie časového bodu. Hodiny sú typ hodín (napríklad systémové_hodiny) a Trvanie je typ trvania (napríklad sekundy)

Knižnica Chrono sa používa na spracovanie dátumu a času. Táto knižnica bola navrhnutá tak, aby sa zaoberala skutočnosťou, že časovače a hodiny sa môžu v rôznych systémoch líšiť, a preto sa časom zlepšila z hľadiska presnosti. Jedinečná vec na chrono je, že poskytuje a presne neutrálny koncept oddelením trvania a časového bodu (časového bodu) od konkrétnych hodín. chrono je názov hlavičky a tiež sub-namespace: Všetky prvky v tejto hlavičke (okrem špecializácií common_type) nie sú definované priamo pod std namespace (ako väčšina štandardnej knižnice), ale pod std::chrono menný priestor . Prvky v tejto hlavičke sa zaoberajú časom. Deje sa to hlavne pomocou troch konceptov:

Trvanie

Objekt trvania vyjadruje časové rozpätie pomocou počtu minút, dvoch hodín alebo desať milisekúnd. Napríklad „42 sekúnd“ by mohlo byť reprezentované trvaním pozostávajúcim zo 42 tiknutí 1-sekundovej časovej jednotky. 

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

výstup:

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

Hodiny

Hodiny sa skladajú z počiatočného bodu (alebo epochy) a rýchlosti tikania. Napríklad hodiny môžu mať epochu 22. februára 1996 a tikať každú sekundu. C++ definuje tri typy hodín:

    systémové_hodiny -Je to aktuálny čas podľa systému (bežné hodiny, ktoré vidíme na paneli nástrojov počítača). Zapisuje sa ako std::chrono::system_clock steady_clock -Sú to monotónne hodiny, ktoré sa nikdy nebudú nastavovať. Idú rovnomerne. Zapisuje sa ako std::chrono::steady_clock hodiny s vysokým rozlíšením - Poskytuje najmenšiu možnú periódu kliešťa. Zapisuje sa ako-std::chrono::high_resolution_clock

Časový bod

Objekt time_point vyjadruje časový bod vzhľadom na epochu hodín. Interne objekt ukladá objekt typu trvania a používa typ hodín ako referenciu pre svoju epochu.  

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

výstup:

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

Je dôležité poznamenať, že presnosť a presnosť hodín a trvania poskytuje sa môže líšiť v závislosti od systému a platformy a vždy je dobré skontrolovať dokumentáciu vašej platformy, kde nájdete ďalšie informácie.

Vytvoriť kvíz