C++ 高精度时钟获取当前时间 std::chrono::high_resolution_clock::now
- 1. `std::chrono::high_resolution_clock::now`
- 2. `std::chrono::milliseconds`
- 3. `std::chrono::microseconds`
- References
1. std::chrono::high_resolution_clock::now
Get current time
https://cplusplus.com/reference/chrono/high_resolution_clock/now/
// public static member function static time_point now() noexcept;
Returns the current time_point
in the frame of the high_resolution_clock
.
1.1. Parameters
none
1.2. Return value
The time_point
representing the current time.
time_point
is a member type, defined as an alias of time_point<high_resolution_clock>
.
1.3. Example
#include <iostream> #include <ctime> #include <ratio> #include <chrono> int main() { using namespace std::chrono; high_resolution_clock::time_point begin = high_resolution_clock::now(); std::cout << "Printing out 1000 stars...\n"; for (int i = 0; i < 1000; ++i) { std::cout << "*"; } std::cout << std::endl; high_resolution_clock::time_point end = high_resolution_clock::now(); duration<double> time_span = duration_cast<duration<double>>(end - begin); std::cout << "It took me " << time_span.count() << " seconds."; std::cout << std::endl; return 0; }
Printing out 1000 stars... **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** It took me 0.0411305 seconds. 请按任意键继续. . .
time_point
is a member type, defined as an alias of time_point<high_resolution_clock>
.
#include <iostream> #include <ctime> #include <ratio> #include <chrono> int main() { using namespace std::chrono; time_point<high_resolution_clock> begin = high_resolution_clock::now(); std::cout << "Printing out 1000 stars...\n"; for (int i = 0; i < 1000; ++i) { std::cout << "*"; } std::cout << std::endl; time_point<high_resolution_clock> end = high_resolution_clock::now(); duration<double> time_span = duration_cast<duration<double>>(end - begin); std::cout << "It took me " << time_span.count() << " seconds."; std::cout << std::endl; return 0; }
Printing out 1000 stars... **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** It took me 0.033101 seconds. 请按任意键继续. . .
2. std::chrono::milliseconds
Duration in milliseconds
// class typedef duration < /* see rep below */, milli > milliseconds;
Instantiation of duration
to represent milliseconds.
A millisecond (from milli- and second; symbol: ms) is a unit of time in the International System of Units equal to one thousandth (0.001 or 1 0 − 3 10^{-3} 10−3 or 1/1000) of a second or 1000 microseconds.
1 millisecond (1 ms)
3. std::chrono::microseconds
Duration in microseconds
// class typedef duration < /* see rep below */, micro > microseconds;
Instantiation of duration
to represent microseconds.
A microsecond is a unit of time in the International System of Units (SI) equal to one millionth (0.000001 or 1 0 − 6 10^{-6} 10−6 or 1/1,000,000) of a second. Its symbol is μs, sometimes simplified to us when Unicode is not available.
1 microsecond (1 μs)
3.1. Example
#include <iostream> #include <ctime> #include <ratio> #include <chrono> int main() { std::chrono::time_point<std::chrono::high_resolution_clock> begin = std::chrono::high_resolution_clock::now(); std::cout << "Printing out 1000 stars...\n"; for (int i = 0; i < 1000; ++i) { std::cout << "*"; } std::cout << std::endl; std::chrono::time_point<std::chrono::high_resolution_clock> end = std::chrono::high_resolution_clock::now(); std::chrono::milliseconds time_span_ms = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin); std::chrono::microseconds time_span_us = std::chrono::duration_cast<std::chrono::microseconds>(end - begin); std::cout << "It took me " << time_span_ms.count() << " milliseconds (ms).\n"; std::cout << "It took me " << time_span_us.count() << " microseconds (us).\n"; std::cout << std::endl; return 0; }
Printing out 1000 stars... **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** It took me 33 milliseconds (ms). It took me 33908 microseconds (us). 请按任意键继续. . .
References
[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/