Chrono în C++

este un antet C++ care oferă o colecție de tipuri și funcții pentru a lucra cu timpul. Este o parte a bibliotecii standard de șabloane C++ (STL) și este inclusă în C++11 și versiunile ulterioare.

oferă trei tipuri principale de ceasuri: system_clock steady_clock și high_resolution_clock. Aceste ceasuri sunt folosite pentru a măsura timpul în diferite moduri.

system_clock reprezintă ceasul de perete în timp real pentru întregul sistem. Este afectat de ajustările de timp ale sistemului.
steady_clock reprezintă un ceas care crește monoton, care nu este afectat de modificările orei sistemului.
high_resolution_clock este ceasul cu cea mai scurtă perioadă de bifare disponibilă pe sistem.

oferă, de asemenea, o colecție de tipuri de durată, inclusiv durata care poate fi folosit pentru a reprezenta o durată de timp. Rep este tipul de reprezentare (cum ar fi int sau long) și Period este raportul dintre durata (cum ar fi nanosecunde sau secunde).
În plus oferă o colecție de tipuri de puncte de timp, inclusiv time_point care poate fi folosit pentru a reprezenta un moment în timp. Ceasul este tipul de ceas (cum ar fi system_clock) și Duration este tipul de durată (cum ar fi secunde)

Biblioteca Chrono este folosită pentru a trata data și ora. Această bibliotecă a fost concepută pentru a face față faptului că temporizatoarele și ceasurile pot fi diferite pe sisteme diferite și astfel să se îmbunătățească în timp în ceea ce privește precizia. Lucrul unic despre chrono este că oferă o concept neutru de precizie prin separarea duratei și a punctului de timp (punct de timp) de ceasuri specifice. chrono este numele unui antet și, de asemenea, al unui sub-namespace: Toate elementele din acest antet (cu excepția specializărilor common_type) nu sunt definite direct sub spațiul de nume std (ca majoritatea bibliotecii standard), ci sub spatiu de nume std::chrono . Elementele din acest antet se ocupă de timp. Acest lucru se realizează în principal prin intermediul a trei concepte:

Durată

Un obiect de durată exprimă un interval de timp prin intermediul unui număr, cum ar fi un minut două ore sau zece milisecunde. De exemplu, „42 de secunde” ar putea fi reprezentat de o durată constând din 42 de tick-uri ale unei unități de timp de 1 secundă. 

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

Ieșire:

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

Ceas

Un ceas constă dintr-un punct de plecare (sau o epocă) și o rată de trecere. De exemplu, un ceas poate avea o epocă de 22 februarie 1996 și poate bifa în fiecare secundă. C++ definește trei tipuri de ceas:

    ceas_sistem -Este ora curentă conform sistemului (ceasul obișnuit pe care îl vedem pe bara de instrumente a computerului). Este scris as- std::chrono::system_clock ceas_stabilit -Este un ceas monoton care nu va fi niciodată reglat. Merge într-un ritm uniform. Este scris as- std::chrono::steady_clock ceas_de_înaltă_rezoluție - Oferă cea mai mică perioadă de bifare posibilă. Este scris ca-std::chrono::high_resolution_clock

Punct de timp

Un obiect time_point exprimă un punct în timp relativ la epoca unui ceas. Intern obiectul stochează un obiect de tip durată și folosește tipul Ceas ca referință pentru epoca sa.  

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

Ieșire:

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

Este important de reținut că precizia și acuratețea ceasurilor și duratele oferite de poate varia în funcție de sistem și platformă și este întotdeauna o idee bună să verificați documentația platformei dvs. pentru mai multe informații.

Creați un test