Chrono на C++
system_clock представляє загальносистемний настінний годинник реального часу. На це впливає налаштування часу системи.
steady_clock представляє монотонно зростаючий годинник, на який не впливають зміни системного часу.
high_resolution_clock — це годинник із найкоротшим доступним у системі періодом такту.
Додатково
Бібліотека 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++ визначає три типи годинника:
Точка часу
Об’єкт 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
Важливо відзначити, що точність і точність годинників і тривалості, надані
Створіть вікторину