Chrono на C++

це заголовок C++, який надає набір типів і функцій для роботи з часом. Це частина стандартної бібліотеки шаблонів C++ (STL) і входить до C++11 і пізніших версій.

забезпечує три основні типи годинника: системний годинник steady_clock і high_resolution_clock. Ці годинники використовуються для вимірювання часу різними способами.

system_clock представляє загальносистемний настінний годинник реального часу. На це впливає налаштування часу системи.
steady_clock представляє монотонно зростаючий годинник, на який не впливають зміни системного часу.
high_resolution_clock — це годинник із найкоротшим доступним у системі періодом такту.

також надає колекцію типів тривалості, включаючи тривалість який можна використовувати для представлення тривалості часу. Rep — це тип представлення (наприклад, int або long), а Period — це відношення тривалості (наприклад, наносекунди або секунди).
Додатково надає набір типів часових точок, включаючи time_point який можна використовувати для представлення моменту часу. Clock — це тип годинника (наприклад, system_clock), а Duration — тип тривалості (наприклад, секунди).

Бібліотека Chrono використовується для роботи з датою та часом. Цю бібліотеку було розроблено, щоб врахувати той факт, що таймери та годинники можуть відрізнятися в різних системах, і, таким чином, з часом покращувати точність. Унікальність хроно полягає в тому, що він забезпечує a концепція нейтральної точності, відокремлюючи тривалість і момент часу (точку часу) від конкретних годинників. chrono — це назва заголовка, а також підпростору імен: усі елементи в цьому заголовку (крім спеціалізацій common_type) не визначені безпосередньо в просторі імен std (як більшість стандартної бібліотеки), а під простір імен std::chrono . Елементи в цьому заголовку стосуються часу. Це робиться в основному за допомогою трьох концепцій:

Тривалість

Об’єкт тривалості виражає проміжок часу за допомогою відліку, наприклад, хвилина, дві години або десять мілісекунд. Наприклад, «42 секунди» можуть бути представлені тривалістю, яка складається з 42 тактів одиниці часу в 1 секунду. 

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

Вихід:

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

Годинник

Годинник складається з початкової точки (або епохи) і тактової частоти. Наприклад, годинник може мати епоху 22 лютого 1996 року і цокати щосекунди. C++ визначає три типи годинника:

    системний_годинник - Це поточний час відповідно до системи (звичайний годинник, який ми бачимо на панелі інструментів комп'ютера). Він записується як- std::chrono::system_clock steady_clock -Це монотонний годинник, який ніколи не буде налаштований. Він працює з однаковою швидкістю. Він записується як- std::chrono::steady_clock годинник_високої_роздільності - Забезпечує найменший можливий період тику. Він записується як-std::chrono::high_resolution_clock

Точка часу

Об’єкт time_point виражає момент часу відносно епохи годинника. Внутрішньо об’єкт зберігає об’єкт типу тривалості та використовує тип Clock як посилання на свою епоху.  

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

Вихід:

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

Важливо відзначити, що точність і точність годинників і тривалості, надані може відрізнятися залежно від системи та платформи, тому завжди корисно перевірити документацію вашої платформи для отримання додаткової інформації.

Створіть вікторину

Вам Може Сподобатися