C++ Library - <chrono>
The <chrono> library in C++ provides a set of tools for handling time and date functionality. It is designed to handle durations, time points, and clocks, making it useful for time-based operations, such as measuring the time taken by a function or scheduling events. It consists of three main components that are listed below:
- Duration − It represents the time difference between between two points in time and measured in different time units like hours, minutes and seconds.
- Time Point − It represents a specific point in time, measured from a system-specific epoch. It is created by combining a clock and a duration.
- Clock − It helps in getting the current time or time points. The library offers three types of clocks; they are system_clock, steady_clock and high_resolution_clock.
The <chrono> library helps in eliminating the risk of performing manual time calculations using the integers or floating-point numbers. The commonly used C++ <chrono> copying functions are listed below along with their description.
Including <chrono> Header
To include the <chrono> header in your C++ program, you can use the following syntax.
#include <chrono>
Functions of <chrono> Header
Below is list of all functions from <chrono> header.
| Sr.No. | Functions & Description |
|---|---|
| 1 | operator=
It assigns the contents. |
| 2 | count
It returns the count of ticks. |
| 3 | zero
It return the special duration value zero. |
| 4 | min
It return the special duration value min. |
| 5 | max
It return the special duration value max. |
| 6 | operator+
It implements a unary +. |
| 7 | operator-
It implements a unary -. |
Non-member function
| Sr.No. | Functions & Description |
|---|---|
| 1 | operator==
It compares two durations. |
| 2 | operator*
It compares two durations. |
Measuring Execution Time
In the following example, we are going to use the std::chrono::high_resolution_clock to measure the excurion time of the code.
#include <iostream>
#include <chrono>
#include <thread>
int main() {
auto x = std::chrono::high_resolution_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(3));
auto y = std::chrono::high_resolution_clock::now();
std::chrono::duration < double > duration = y - x;
std::cout << "Result : " << duration.count() << " seconds\n";
return 0;
}
Output
Output of the above code is as follows −
Result : 3.00008 seconds
Using Durations
Let's look at the following example, where we are going to create and manipulate durations using std::chrono::duration.
#include <iostream>
#include <chrono>
int main() {
std::chrono::duration < int > a(11);
std::chrono::duration < int, std::ratio < 60 >> b(22);
auto x = a + b;
std::cout << "Result : " << x.count() << " seconds\n";
return 0;
}
Output
Following is the output of the above code −
Result : 1331 seconds