logo

Chrono i C++

er en C++-header som gir en samling av typer og funksjoner å jobbe med tiden. Det er en del av C++ Standard Template Library (STL) og det er inkludert i C++11 og senere versjoner.

gir tre hovedtyper av klokker: system_clock steady_clock og high_resolution_clock. Disse klokkene brukes til å måle tid på ulike måter.

system_clock representerer den systemomfattende sanntidsveggklokken. Det påvirkes av systemets tidsjusteringer.
steady_clock representerer en monotont økende klokke som ikke påvirkes av endringer i systemtiden.
high_resolution_clock er klokken med kortest avkryssingsperiode tilgjengelig på systemet.



manuell testing

gir også en samling av varighetstyper inkludert varighetsom kan brukes til å representere en varighet av tid. Rep er representasjonstypen (som int eller long) og Periode er forholdet mellom varigheten (som nanosekunder eller sekunder).
I tillegggir en samling av tidpunkttyper inkludert time_pointsom kan brukes til å representere et tidspunkt. Klokke er klokketypen (som system_clock) og Duration er varighetstypen (som sekunder)

Chrono-biblioteket brukes til å håndtere dato og klokkeslett. Dette biblioteket ble designet for å håndtere det faktum at tidtakere og klokker kan være forskjellige på forskjellige systemer og dermed forbedres over tid når det gjelder presisjon. Det unike med chrono er at det gir en presisjonsnøytralt konsept ved å skille varighet og tidspunkt (tidspunkt) fra spesifikke klokker. chrono er navnet på en header og også på et sub-namespace: Alle elementene i denne headeren (bortsett fra common_type-spesialiseringene) er ikke definert direkte under standard-navneområdet (som de fleste av standardbiblioteket), men under std::chrono navneområde . Elementene i denne overskriften omhandler tid. Dette gjøres hovedsakelig ved hjelp av tre konsepter:

Varighet

java dato gjeldende

Et varighetsobjekt uttrykker et tidsrom ved hjelp av en telling som et minutt to timer eller ti millisekunder. For eksempel kan '42 sekunder' representeres av en varighet som består av 42 tikker av en 1-sekunds tidsenhet. 

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

Produksjon:

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

Klokke

En klokke består av et startpunkt (eller epoke) og en tikkfrekvens. For eksempel kan en klokke ha en epoke på 22. februar 1996 og tikke hvert sekund. C++ definerer tre klokketyper:

    systemklokke-Det er gjeldende klokkeslett i henhold til systemet (vanlig klokke som vi ser på verktøylinjen på datamaskinen). Den er skrevet som std::chrono::systemklokkesteady_clock-Det er en monoton klokke som aldri vil bli justert. Den går med jevn hastighet. Den er skrevet som std::chrono::steady_clockhøy_oppløsningsklokke– Det gir minst mulig avkryssingsperiode. Den er skrevet som-std::chrono::high_resolution_clock

Tidspunkt

Et time_point-objekt uttrykker et tidspunkt i forhold til en klokkes epoke. Internt lagrer objektet et objekt av en varighetstype og bruker klokketypen som referanse for sin epoke.  

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

Produksjon:

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

Det er viktig å merke seg at presisjonen og nøyaktigheten til klokkene og varighetene levert avkan variere avhengig av system og plattform, og det er alltid en god idé å sjekke dokumentasjonen til plattformen din for mer informasjon.

git rebase

Lag quiz