Chrono v C++

je hlavička C++, která poskytuje kolekci typů a funkcí pro práci s časem. Je součástí C++ Standard Template Library (STL) a je součástí C++11 a novějších verzí.

poskytuje tři hlavní typy hodin: system_clock steady_clock a high_resolution_clock. Tyto hodiny se používají k měření času různými způsoby.

system_clock představuje nástěnné hodiny reálného času v celém systému. Je to ovlivněno úpravami času systému.
steady_clock představuje monotónně rostoucí hodiny, které nejsou ovlivněny změnami systémového času.
high_resolution_clock jsou hodiny s nejkratší periodou tikání dostupnou v systému.

také poskytuje sbírku typů trvání včetně trvání které lze použít k vyjádření doby trvání. Rep je typ reprezentace (například int nebo long) a Period je poměr trvání (například nanosekundy nebo sekundy).
Navíc poskytuje kolekci typů časových bodů včetně time_point které lze použít k reprezentaci určitého bodu v čase. Hodiny jsou typ hodin (například systémové_hodiny) a Trvání je typ trvání (například sekundy).

Knihovna Chrono se používá pro práci s datem a časem. Tato knihovna byla navržena tak, aby se vypořádala se skutečností, že časovače a hodiny se mohou na různých systémech lišit, a tak se časem zlepšila z hlediska přesnosti. Jedinečná věc na chrono je, že poskytuje a precizně neutrální koncept oddělením trvání a časového bodu (časového bodu) od konkrétních hodin. chrono je název hlavičky a také podjmenného prostoru: Všechny prvky v této hlavičce (kromě specializací common_type) nejsou definovány přímo pod jmenným prostorem std (jako většina standardní knihovny), ale pod jmenný prostor std::chrono . Prvky v této hlavičce se zabývají časem. To se děje především pomocí tří konceptů:

Trvání

Objekt trvání vyjadřuje časové rozpětí pomocí počtu minut, dvou hodin nebo deseti milisekund. Například „42 sekund“ by mohlo být reprezentováno dobou trvání skládající se ze 42 dílků 1-sekundové časové 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 se skládají z počátečního bodu (nebo epochy) a rychlosti tikání. Například hodiny mohou mít epochu 22. února 1996 a tikají každou sekundu. C++ definuje tři typy hodin:

    systémové_hodiny -Je to aktuální čas podle systému (běžné hodiny, které vidíme na nástrojové liště počítače). Zapisuje se jako std::chrono::system_clock steady_clock -Jsou to monotónní hodiny, které se nikdy nebudou upravovat. Běží stejnou rychlostí. Zapisuje se jako std::chrono::steady_clock hodiny s vysokým rozlišením - Poskytuje nejmenší možnou dobu klíštění. Je zapsán jako-std::chrono::high_resolution_clock

Časový bod

Objekt time_point vyjadřuje bod v čase vzhledem k epoše hodin. Interně objekt ukládá objekt typu trvání a používá typ Clock jako referenci pro jeho 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é poznamenat, že přesnost a přesnost hodin a trvání poskytuje se může lišit v závislosti na systému a platformě a vždy je dobré zkontrolovat dokumentaci vaší platformy, kde najdete další informace.

Vytvořit kvíz