Crono in C++

è un'intestazione C++ che fornisce una raccolta di tipi e funzioni da utilizzare nel tempo. Fa parte della libreria di modelli standard (STL) di C++ ed è incluso in C++11 e versioni successive.

fornisce tre tipi principali di orologi: orologio_sistema orologio_stazionario e orologio_alta_risoluzione. Questi orologi vengono utilizzati per misurare il tempo in vari modi.

system_clock rappresenta l'orologio da parete in tempo reale a livello di sistema. È influenzato dalle regolazioni dell'ora del sistema.
steady_clock rappresenta un orologio ad aumento monotono che non è influenzato dalle modifiche all'ora del sistema.
high_solving_clock è l'orologio con il periodo di tick più breve disponibile sul sistema.

fornisce anche una raccolta di tipi di durata inclusa la durata che può essere utilizzato per rappresentare una durata di tempo. Rep è il tipo di rappresentazione (come int o long) e Period è il rapporto tra la durata (come nanosecondi o secondi).
Inoltre fornisce una raccolta di tipi di punti temporali incluso time_point che può essere utilizzato per rappresentare un punto nel tempo. Orologio è il tipo di orologio (ad esempio system_clock) e Durata è il tipo di durata (ad esempio secondi)

La libreria Chrono viene utilizzata per gestire data e ora. Questa libreria è stata progettata per far fronte al fatto che timer e orologi potrebbero essere diversi su sistemi diversi e quindi per migliorare nel tempo in termini di precisione. La cosa unica del crono è che fornisce a concetto di precisione neutrale separando la durata e il punto temporale (timepoint) da orologi specifici. chrono è il nome di un'intestazione e anche di un sotto-spazio dei nomi: tutti gli elementi in questa intestazione (eccetto le specializzazioni common_type) non sono definiti direttamente sotto lo spazio dei nomi std (come la maggior parte della libreria standard) ma sotto il spazio dei nomi std::chrono . Gli elementi in questa intestazione riguardano il tempo. Ciò avviene principalmente attraverso tre concetti:

Durata

Un oggetto durata esprime un intervallo di tempo mediante un conteggio come un minuto, due ore o dieci millisecondi. Ad esempio, "42 secondi" potrebbe essere rappresentato da una durata composta da 42 tick di un'unità di tempo di 1 secondo. 

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

Produzione:

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

Orologio

Un orologio è costituito da un punto di partenza (o epoca) e da una frequenza di tick. Ad esempio, un orologio può avere l'epoca del 22 febbraio 1996 e ticchettare ogni secondo. C++ definisce tre tipi di orologio:

    system_clock -È l'ora attuale secondo il sistema (orologio normale che vediamo sulla barra degli strumenti del computer). È scritto asstd::chrono::system_clock orologio_stabile -È un orologio monotono che non verrà mai regolato. Va ad un ritmo uniforme. È scritto asstd::chrono::steady_clock orologio_ad_alta_risoluzione - Fornisce il periodo di tick più piccolo possibile. È scritto come-std::chrono::high_length_clock

Punto temporale

Un oggetto time_point esprime un punto nel tempo relativo all'epoca di un orologio. Internamente l'oggetto memorizza un oggetto di tipo durata e utilizza il tipo Orologio come riferimento per la sua epoca.  

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

Produzione:

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

È importante notare che la precisione e l'accuratezza degli orologi e delle durate fornite da può variare a seconda del sistema e della piattaforma ed è sempre una buona idea controllare la documentazione della propria piattaforma per ulteriori informazioni.

Crea quiz