C++ 时间库chrono计算程序运行时间
本文总结了chrono库的引入方法以及计算程序片段运行时间的方法
一、chrono库的引入方法(注意事项)
首先chrono是属于std命名空间的。
所以在程序中应该这样包含头文件:
#include <chrono>
using namespace std;
using namespace chrono;// 在“using namespace std;”后面写这一行代码的话就等价于“using namespace std::chrono;”
如果是像下面这样的话,那么就会报错。
#include <chrono>
using namespace chrono;
using namespace std;
或者也可以直接using namespace std::chrono;
一句话总结第一节的主要内容:chrono是std下的,using 命名空间时不要忘记先后顺序
二、程序运行时间计算
代码示例如下:
主要是用high_resolution_clock::now(); 和 duration_cast<milliseconds>,前者表示时间点,后者用来计算时间段长度(计算秒用seconds,计算毫秒用milliseconds,计算微秒用microseconds)。
记不清楚什么类型,那就把所有的变量均使用auto类型来存储。
#include <iostream>
#include <chrono>
#include <vector>using namespace std;
using namespace chrono;int main() {// 获取当前时间点(开始时间)auto start = high_resolution_clock::now();// 测试代码片段1:循环for (int i = 0; i < 1000000; ++i) {// 空循环}// 获取当前时间点(中间时间)auto middle = high_resolution_clock::now();// 测试代码片段2:向量操作vector<int> vec;for (int i = 0; i < 1000000; ++i) {vec.push_back(i);}// 获取当前时间点(结束时间)auto end = high_resolution_clock::now();// 计算各个代码片段的时间差auto duration1 = duration_cast<milliseconds>(middle - start);auto duration2 = duration_cast<milliseconds>(end - middle);// 输出结果cout << "代码片段1运行时间:" << duration1.count() << " 毫秒" << endl;cout << "代码片段2运行时间:" << duration2.count() << " 毫秒" << endl;return 0;
}