C++记录程序运行时间的4方法
草海桐 2024-08-04 11:35:01 阅读 60
目录
1. 使用 <chrono>库(C++11及以后版本)
2. 使用<ctime>库(较旧但常用的方法)
3、使用第三方库(如Boost.Timer)
4. 使用Windows API函数(Windows平台特有)
1. 使用 <code><chrono> 库(C++11及以后版本)
<chrono>
库提供了高精度的时间测量功能。
#include <iostream>
#include <chrono>
int main() {
auto start = std::chrono::high_resolution_clock::now();
// Your code here
// ...
auto stop = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start).count();
std::cout << "Elapsed time: " << duration << " ms\n";
return 0;
}
2. 使用 <ctime>
库(较旧但常用的方法)
<ctime>
库提供了基于系统时间的函数clock()。
#include <iostream>
#include <ctime>
int main() {
clock_t start = clock(); //也可以double start = clock();
// Your code here
// ...
clock_t end = clock();
double cpu_time_used = static_cast<double>(end - start) / CLOCKS_PER_SEC;
// /CLOCKS_PER_SEC将结果转为以秒为单位
std::cout << "CPU time used: " << cpu_time_used << " s\n";
return 0;
}
3、使用第三方库(如Boost.Timer)
Boost库提供了一个计时器模块,用于测量代码块的执行时间。
首先,你需要安装Boost库,并在项目中包含Boost.Timer头文件。
#include <boost/timer/timer.hpp>
#include <iostream>
int main() {
boost::timer::auto_cpu_timer t; // 自动测量和打印执行时间
// Your code here
// ...
return 0;
}
4. 使用Windows API函数(Windows平台特有)
4.1 使用 GetTickCount()
这个函数返回从系统启动开始经过的毫秒数。GetTickCount()
的精度在1到15毫秒之间,并且其值会在大约49.7天后回绕。
#include <windows.h>
#include <iostream>
int main() {
DWORD start = GetTickCount();
// ... 执行你的代码 ...
DWORD end = GetTickCount();
std::cout << "程序运行时间: " << (end - start) << " 毫秒" << std::endl;
return 0;
}
4.2 使用 QueryPerformanceCounter()
和 QueryPerformanceFrequency()
这两个函数提供了更高的精度,通常在微秒级别。
#include <windows.h>
#include <iostream>
int main() {
LARGE_INTEGER start, end, freq;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
// ... 执行你的代码 ...
QueryPerformanceCounter(&end);
double elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart * 1000.0; // 毫秒
std::cout << "程序运行时间: " << elapsedTime << " 毫秒" << std::endl;
return 0;
}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。