Chrono C++:ssa

on C++-otsikko, joka tarjoaa kokoelman tyyppejä ja toimintoja, jotka toimivat ajan kanssa. Se on osa C++ Standard Template Libraryä (STL) ja se sisältyy C++11:een ja uudempiin versioihin.

tarjoaa kolme päätyyppiä kelloja: system_clock steady_clock ja high_resolution_clock. Näitä kelloja käytetään ajan mittaamiseen eri tavoin.

system_clock edustaa järjestelmän laajuista reaaliaikaista seinäkelloa. Siihen vaikuttavat järjestelmän aikasäädöt.
steady_clock edustaa monotonisesti kasvavaa kelloa, johon järjestelmän ajan muutokset eivät vaikuta.
high_resolution_clock on kello, jolla on lyhyin järjestelmässä käytettävissä oleva tikitusjakso.

tarjoaa myös kokoelman kestotyyppejä, mukaan lukien kesto jota voidaan käyttää edustamaan aikaa. Rep on esitystyyppi (kuten int tai long) ja Period on keston suhde (kuten nanosekuntia tai sekuntia).
Lisäksi tarjoaa kokoelman aikapistetyyppejä, mukaan lukien aika_piste jota voidaan käyttää esittämään ajankohtaa. Kello on kellon tyyppi (kuten system_clock) ja Kesto on kestotyyppi (kuten sekuntia).

Chrono-kirjastoa käytetään päivämäärän ja ajan käsittelemiseen. Tämä kirjasto on suunniteltu käsittelemään sitä tosiasiaa, että ajastimet ja kellot voivat olla erilaisia ​​eri järjestelmissä, ja siten parantamaan tarkkuutta ajan myötä. Ainutlaatuinen asia chronossa on, että se tarjoaa a tarkkuusneutraali konsepti erottamalla kesto ja aikapiste (aikapiste) tietyistä kelloista. chrono on otsikon ja myös alinimiavaruuden nimi: Kaikki tämän otsikon elementit (paitsi common_type-erikoisalat) ei ole määritetty suoraan std-nimiavaruuden alle (kuten useimmat standardikirjastot) vaan std::chrono-nimiavaruus . Tämän otsikon elementit käsittelevät aikaa. Tämä tehdään pääasiassa kolmen käsitteen avulla:

Kesto

Kestoobjekti ilmaisee aikajänteen laskennalla, kuten minuutti kaksi tuntia tai kymmenen millisekuntia. Esimerkiksi '42 sekuntia' voitaisiin edustaa kestona, joka koostuu 42 tikkusta 1 sekunnin aikayksikössä. 

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

Lähtö:

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

Kello

Kello koostuu aloituspisteestä (tai aikakaudesta) ja tikitysnopeudesta. Esimerkiksi kellon aikakausi voi olla 22. helmikuuta 1996 ja se tikittää joka sekunti. C++ määrittelee kolme kellotyyppiä:

    system_clock -Se on nykyinen aika järjestelmän mukaan (normaali kello, jonka näemme tietokoneen työkalupalkissa). Se kirjoitetaan muodossa-std::chrono::system_clock vakaa_kello -Se on monotoninen kello, jota ei koskaan säädetä. Se kulkee tasaisesti. Se kirjoitetaan muodossa-std::chrono::steady_clock high_resolution_clock - Se tarjoaa pienimmän mahdollisen tikkujakson. Se on kirjoitettu muodossa-std::chrono::high_resolution_clock

Aikapiste

Time_point -objekti ilmaisee ajankohdan suhteessa kellon aikakauteen. Sisäisesti objekti tallentaa kestotyyppisen objektin ja käyttää Kello-tyyppiä viitteenä aikakaudelleen.  

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

Lähtö:

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

On tärkeää huomata, että kellojen ja kestojen tarkkuus ja tarkkuus voi vaihdella järjestelmästä ja alustasta riippuen, ja on aina hyvä idea tarkistaa alustasi dokumentaatio saadaksesi lisätietoja.

Luo tietokilpailu