logo

Chrono C++

yra C++ antraštė, kurioje pateikiama tipų ir funkcijų rinkinys, skirtas dirbti su laiku. Tai yra C++ standartinės šablonų bibliotekos (STL) dalis ir įtraukta į C++11 ir vėlesnes versijas.

pateikia tris pagrindinius laikrodžių tipus: system_clock steady_clock ir high_resolution_clock. Šie laikrodžiai naudojami laikui matuoti įvairiais būdais.

system_clock reiškia visos sistemos realaus laiko sieninį laikrodį. Tam įtakos turi sistemos laiko koregavimai.
steady_clock reiškia monotoniškai didėjantį laikrodį, kuriam įtakos neturi sistemos laiko pokyčiai.
high_resolution_clock yra laikrodis su trumpiausiu tikėjimo periodu sistemoje.



java pasirinkimo rūšiavimas

taip pat pateikia trukmės tipų rinkinį, įskaitant trukmękurį galima naudoti laiko trukmei pavaizduoti. Rep yra vaizdavimo tipas (pvz., int arba long), o periodas yra trukmės santykis (pvz., nanosekundės arba sekundės).
Papildomaipateikia laiko taškų tipų rinkinį, įskaitant laiko_taškąkurį galima naudoti laiko momentui pavaizduoti. Laikrodis yra laikrodžio tipas (pvz., system_clock), o Trukmė yra trukmės tipas (pvz., sekundės).

Chrono biblioteka naudojama datai ir laikui tvarkyti. Ši biblioteka buvo sukurta siekiant susidoroti su faktu, kad laikmačiai ir laikrodžiai įvairiose sistemose gali skirtis, ir laikui bėgant tobulinti tikslumą. Unikalus chrono dalykas yra tas, kad jis suteikia a tikslumo ir neutralumo koncepcija, atskiriant trukmę ir laiko tašką (laiko tašką) nuo konkrečių laikrodžių. chrono yra antraštės ir antraštės pavadinimas: visi šios antraštės elementai (išskyrus bendrojo tipo specializacijas) yra apibrėžti ne tiesiogiai std vardų srityje (kaip ir dauguma standartinės bibliotekos), o pagal std::chrono vardų erdvė . Šios antraštės elementai susiję su laiku. Tai daugiausia daroma naudojant tris sąvokas:

Trukmė

Trukmės objektas išreiškia laiko tarpą skaičiuodamas, pavyzdžiui, minutę dvi valandas arba dešimt milisekundžių. Pavyzdžiui, „42 sekundės“ gali būti pavaizduotos trukme, kurią sudaro 42 1 sekundės laiko vieneto žymės. 

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 << "duration (in periods): ";  std::cout << mil.count() << " milliseconds.n";    std::cout << "duration (in seconds): ";  std::cout << (mil.count() * milliseconds::period::num /   milliseconds::period::den);  std::cout << " seconds.n";  return 0; } 

Išvestis:

jei dar teiginiai java
duration (in periods): 60000 milliseconds. duration (in seconds): 60 seconds.

Laikrodis

Laikrodis susideda iš pradžios taško (arba epochos) ir tiksėjimo greičio. Pavyzdžiui, laikrodis gali turėti 1996 m. vasario 22 d. epochą ir tiksėti kas sekundę. C++ apibrėžia tris laikrodžių tipus:

    sistemos_laikrodis-Tai dabartinis laikas pagal sistemą (įprastas laikrodis, kurį matome kompiuterio įrankių juostoje). Jis parašytas kaip-std::chrono::system_clockpastovus_laikrodis- Tai monotoniškas laikrodis, kuris niekada nebus reguliuojamas. Jis veikia vienodu greičiu. Jis parašytas kaip-std::chrono::steady_clockdidelės_raiškos_laikrodis- Tai suteikia mažiausią galimą tikėjimo laikotarpį. Jis parašytas kaip-std::chrono::high_resolution_clock

Laiko taškas

Objektas „time_point“ išreiškia laiko tašką, palyginti su laikrodžio epocha. Viduje objektas saugo trukmės tipo objektą ir naudoja Laikrodžio tipą kaip savo epochos nuorodą.  

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 < 2) return n;  return fibonacci(n-1) + fibonacci(n-2); } int main() {  // Using time point and system_clock  std::chrono::time_point<std::chrono::system_clock> start end;  start = std::chrono::system_clock::now();  std::cout << "f(42) = " << fibonacci(42) << 'n';  end = std::chrono::system_clock::now();  std::chrono::duration<double> elapsed_seconds = end - start;  std::time_t end_time = std::chrono::system_clock::to_time_t(end);  std::cout << "finished computation at " << std::ctime(&end_time)  << "elapsed time: " << elapsed_seconds.count() << "sn"; } 

Išvestis:

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

Svarbu atkreipti dėmesį į tai, kad laikrodžių ir trukmės tikslumas ir tikslumasgali skirtis priklausomai nuo sistemos ir platformos, todėl visada naudinga peržiūrėti platformos dokumentaciją, kad gautumėte daugiau informacijos.

govinda aktorius

Sukurti viktoriną