📅  最后修改于: 2023-12-03 15:40:09.625000             🧑  作者: Mango
在编写程序时,我们常常需要测试程序运行的时间,这对于优化程序以及比较不同算法的运行效率非常有帮助。本文将介绍C++中常用的时间测量方法。
clock()
函数可以返回程序运行的时钟时间,单位是毫秒。以下是使用clock()
函数测量时间的示例代码:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
clock_t start, end;
double duration;
start = clock();
// 在这里写需要被测量的代码
end = clock();
duration = (double)(end - start) / CLOCKS_PER_SEC;
cout << "程序运行时间为 " << duration << " 秒" << endl;
return 0;
}
其中,start = clock();
表示开始记录时间,end = clock();
表示停止记录时间,duration = (double)(end - start) / CLOCKS_PER_SEC;
将记录的毫秒数转换为秒,并输出。需要注意的是,clock()
函数返回的时钟时间可能会受到系统进程调度的影响,不太准确。因此,我们一般用它作为经验性的参考。
chrono
库是C++11标准中新增的时间库,提供了更为精确的时间测量方法。以下是使用chrono
库测量时间的示例代码:
#include <iostream>
#include <chrono>
using namespace std;
using namespace chrono;
int main()
{
auto start = high_resolution_clock::now();
// 在这里写需要被测量的代码
auto end = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(end - start).count();
cout << "程序运行时间为 " << duration << " 微秒" << endl;
return 0;
}
其中,auto start = high_resolution_clock::now();
表示开始记录时间,auto end = high_resolution_clock::now();
表示停止记录时间,auto duration = duration_cast<microseconds>(end - start).count();
将记录的时间转换为微秒,并输出。需要注意的是,high_resolution_clock::now()
返回的是当前时刻的时间点,精度很高,但是每个系统的实现都有一些不同。因此,它不一定具有可移植性,但是可以保证在同一个系统上运行时是精确的。
以上是C++中常用的时间测量方法,我们可以根据实际情况灵活选择。在进行时间测量时,我们需要注意以下几点:
参考资料: