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
Advertisements