本文最后更新于:2022年9月29日 下午
cpp使用chrono获取当前时间
有时候我们需要测试一个函数的运行时间,可以使用 std
中的chrono
来完成此功能,示例代码如下。
示例
示例1
测试代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <chrono> #include <iostream>
int main() {
std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
std::chrono::nanoseconds d = now.time_since_epoch(); std::cout <<"current nanoseconds: " << d.count() << std::endl;
std::chrono::microseconds mcrosec = std::chrono::duration_cast<std::chrono::microseconds>(d); std::cout<<"current microseconds: " << mcrosec.count() <<std::endl;
std::chrono::milliseconds millsec = std::chrono::duration_cast<std::chrono::milliseconds>(d); std::cout<<"current milliseconds: " << millsec.count() << std::endl; std::chrono::seconds sec = std::chrono::duration_cast<std::chrono::seconds>(d); std::cout<<"current seconds: " << sec.count() << std::endl;
std::chrono::minutes minutes = std::chrono::duration_cast<std::chrono::minutes>(d); std::cout<<"current minutes: " << minutes.count() << std::endl;
return 0; }
|
示例2
测试代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <iostream> #include <chrono>
int main() { auto t1 = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); for(int i=0;i<1000000;i++); auto t2 = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); std::cout << t2 - t1 << std::endl; int64_t t11 = std::chrono::duration_cast<std::chrono::microseconds >(std::chrono::system_clock::now().time_since_epoch()).count(); for(int i=0;i<1000000;i++); int64_t t12 = std::chrono::duration_cast<std::chrono::microseconds >(std::chrono::system_clock::now().time_since_epoch()).count(); std::cout << t12 - t11 << std::endl;
int64_t t21 = std::chrono::system_clock::now().time_since_epoch().count(); for(int i=0;i<1000000;i++); int64_t t22 = std::chrono::system_clock::now().time_since_epoch().count(); std::cout << t22 - t21 << std::endl; return 0; }
|
需注意:不同的时间精度用来存储的类型可以不同,但需要满足其条件,否则会溢出。
单位 |
长度 |
nanoseconds/纳秒 |
至少 64bits 的有符号数 |
microseconds/微妙 |
至少 55bits 的有符号数 |
milliseconds/毫秒 |
至少 45bits 的有符号数 |
seconds/秒 |
至少 35bits 的有符号数 |
minutes/分 |
至少 29bits 的有符号数 |
hours/时 |
至少 23bits 的有符号数 |
参考
- cpp reference chrono