logo

Chrono în C++

este un antet C++ care oferă o colecție de tipuri și funcții pentru a lucra cu timpul. Este o parte a bibliotecii standard de șabloane C++ (STL) și este inclusă în C++11 și versiunile ulterioare.

oferă trei tipuri principale de ceasuri: system_clock steady_clock și high_resolution_clock. Aceste ceasuri sunt folosite pentru a măsura timpul în diferite moduri.

system_clock reprezintă ceasul de perete în timp real pentru întregul sistem. Este afectat de ajustările de timp ale sistemului.
steady_clock reprezintă un ceas care crește monoton, care nu este afectat de modificările orei sistemului.
high_resolution_clock este ceasul cu cea mai scurtă perioadă de bifare disponibilă pe sistem.



forma completă a i d e

oferă, de asemenea, o colecție de tipuri de durată, inclusiv duratacare poate fi folosit pentru a reprezenta o durată de timp. Rep este tipul de reprezentare (cum ar fi int sau long) și Period este raportul dintre durata (cum ar fi nanosecunde sau secunde).
În plusoferă o colecție de tipuri de puncte de timp, inclusiv time_pointcare poate fi folosit pentru a reprezenta un moment în timp. Ceasul este tipul de ceas (cum ar fi system_clock) și Duration este tipul de durată (cum ar fi secunde)

Biblioteca Chrono este folosită pentru a trata data și ora. Această bibliotecă a fost concepută pentru a face față faptului că temporizatoarele și ceasurile pot fi diferite pe sisteme diferite și astfel să se îmbunătățească în timp în ceea ce privește precizia. Lucrul unic despre chrono este că oferă o concept neutru de precizie prin separarea duratei și a punctului de timp (punct de timp) de ceasuri specifice. chrono este numele unui antet și, de asemenea, al unui sub-namespace: Toate elementele din acest antet (cu excepția specializărilor common_type) nu sunt definite direct sub spațiul de nume std (ca majoritatea bibliotecii standard), ci sub spatiu de nume std::chrono . Elementele din acest antet se ocupă de timp. Acest lucru se realizează în principal prin intermediul a trei concepte:

Durată

Un obiect de durată exprimă un interval de timp prin intermediul unui număr, cum ar fi un minut două ore sau zece milisecunde. De exemplu, „42 de secunde” ar putea fi reprezentat de o durată constând din 42 de tick-uri ale unei unități de timp de 1 secundă. 

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

Ieșire:

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

Ceas

Un ceas constă dintr-un punct de plecare (sau o epocă) și o rată de trecere. De exemplu, un ceas poate avea o epocă de 22 februarie 1996 și poate bifa în fiecare secundă. C++ definește trei tipuri de ceas:

algoritm de programare round robin
    ceas_sistem-Este ora curentă conform sistemului (ceasul obișnuit pe care îl vedem pe bara de instrumente a computerului). Este scris as- std::chrono::system_clockceas_stabilit-Este un ceas monoton care nu va fi niciodată reglat. Merge într-un ritm uniform. Este scris as- std::chrono::steady_clockceas_de_înaltă_rezoluție- Oferă cea mai mică perioadă de bifare posibilă. Este scris ca-std::chrono::high_resolution_clock

Punct de timp

Un obiect time_point exprimă un punct în timp relativ la epoca unui ceas. Intern obiectul stochează un obiect de tip durată și folosește tipul Ceas ca referință pentru epoca sa.  

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

Ieșire:

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

Este important de reținut că precizia și acuratețea ceasurilor și duratele oferite depoate varia în funcție de sistem și platformă și este întotdeauna o idee bună să verificați documentația platformei dvs. pentru mai multe informații.

algoritm de sortare prin inserare

Creați un test