logo

Chrono in C++

is een C++-header die een verzameling typen en functies biedt om met de tijd te werken. Het maakt deel uit van de C++ Standard Template Library (STL) en is opgenomen in C++11 en latere versies.

biedt drie hoofdtypen klokken: system_clock steady_clock en high_resolutie_clock. Deze klokken worden op verschillende manieren gebruikt om de tijd te meten.

system_clock vertegenwoordigt de systeembrede realtime wandklok. Het wordt beïnvloed door de tijdaanpassingen van het systeem.
steady_clock vertegenwoordigt een monotoon toenemende klok die niet wordt beïnvloed door veranderingen in de systeemtijd.
high_resolutie_klok is de klok met de kortste tikperiode die beschikbaar is op het systeem.



Linux hernoemt map

biedt ook een verzameling duurtypen, inclusief duurdie kan worden gebruikt om een ​​tijdsduur weer te geven. Rep is het representatietype (zoals int of long) en Period is de verhouding van de duur (zoals nanoseconden of seconden).
Aanvullendbiedt een verzameling tijdpunttypen, waaronder time_pointdie gebruikt kan worden om een ​​tijdstip weer te geven. Klok is het kloktype (zoals systeemklok) en Duur is het duurtype (zoals seconden)

Chronobibliotheek wordt gebruikt om met datum en tijd om te gaan. Deze bibliotheek is ontworpen om rekening te houden met het feit dat timers en klokken op verschillende systemen verschillend kunnen zijn en zo in de loop van de tijd qua nauwkeurigheid te verbeteren. Het unieke aan chrono is dat het een precisie-neutraal concept door duur en tijdstip (tijdpunt) te scheiden van specifieke klokken. chrono is de naam van een header en ook van een subnaamruimte: alle elementen in deze header (behalve de common_type-specialisaties) worden niet direct onder de std-naamruimte gedefinieerd (zoals de meeste standaardbibliotheek) maar onder de std::chrono naamruimte . De elementen in deze kop gaan over tijd. Dit gebeurt voornamelijk aan de hand van drie concepten:

Duur

Een duurobject drukt een tijdspanne uit door middel van een telling zoals een minuut, twee uur of tien milliseconden. '42 seconden' zou bijvoorbeeld kunnen worden weergegeven door een duur bestaande uit 42 tikken van een tijdseenheid van 1 seconde. 

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

Uitgang:

hoe het csv-bestand in Java te lezen
duration (in periods): 60000 milliseconds. duration (in seconds): 60 seconds.

Klok

Een klok bestaat uit een startpunt (of tijdperk) en een tiksnelheid. Een klok kan bijvoorbeeld een tijdperk van 22 februari 1996 hebben en elke seconde tikken. C++ definieert drie kloktypen:

    systeemklok-Het is de huidige tijd volgens het systeem (gewone klok die we zien op de werkbalk van de computer). Het is geschreven asstd::chrono::system_clockvaste_klok-Het is een monotone klok die nooit zal worden aangepast. Hij loopt met een uniform tempo. Het is geschreven asstd::chrono::steady_clockhoge_resolutie_klok- Het biedt de kleinst mogelijke tick-periode. Het is geschreven als-std::chrono::high_resolutie_clock

Tijdpunt

Een time_point-object drukt een tijdstip uit ten opzichte van het tijdperk van een klok. Intern slaat het object een object van een duurtype op en gebruikt het Kloktype als referentie voor zijn tijdperk.  

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

Uitgang:

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

Het is belangrijk op te merken dat de precisie en nauwkeurigheid van de klokken en tijdsduur worden geleverd doorkan variëren afhankelijk van het systeem en platform en het is altijd een goed idee om de documentatie van uw platform te raadplegen voor meer informatie.

git rebase

Quiz maken