使用chrono库可高精度跨平台测量C++程序运行时间,通过std::chrono::high_resolution_clock::now()记录起止时间,计算差值得出执行耗时。

在C++中测量程序运行时间,常用的方法有多种,根据精度需求和平台不同可以选择合适的方式。以下是几种常见的计算程序执行时间的方法。
使用 chrono 高精度时钟(推荐)
chrono 是 C++11 引入的时间处理库,提供了高精度、跨平台的计时方式,适合测量代码段的执行时间。
#include <iostream>
#include <chrono>
int main() {
// 记录开始时间
auto start = std::chrono::high_resolution_clock::now();
// 要测量的代码段
for (int i = 0; i
// 模拟工作
}
// 记录结束时间
auto end = std::chrono::high_resolution_clock::now();
// 计算耗时
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end – start);
std::cout << “执行时间: ” << duration.count() << ” 微秒” << std::endl;
return 0;
}
你可以将时间单位改为 milliseconds 或 nanoseconds 来获取不同精度的结果。
使用 clock() 函数(传统方法)
来自 <ctime> 的 clock() 函数是较老但广泛支持的方法,返回程序运行的 CPU 时钟周期数。
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
#include <ctime>
int main() {
clock_t start = clock();
// 执行代码
for (int i = 0; i
// 工作
}
clock_t end = clock();
double elapsed = static_cast<double>(end – start) / CLOCKS_PER_SEC;
std::cout << “执行时间: ” << elapsed << ” 秒” << std::endl;
return 0;
}
注意:clock() 测量的是 CPU 时间,多线程或系统等待时可能不准确。

美间AI:让设计更简单
45
查看详情
Windows 平台使用 QueryPerformanceCounter
在 Windows 上,可以使用高精度性能计数器进行更精确的测量。
#include <iostream>
#include <windows.h>
int main() {
LARGE_INTEGER frequency, start, end;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&start);
// 执行代码
for (int i = 0; i
QueryPerformanceCounter(&end);
double elapsed = (double)(end.QuadPart – start.QuadPart) / frequency.QuadPart;
std::cout << “执行时间: ” << elapsed << ” 秒” << std::endl;
return 0;
}
这种方法精度极高,适合性能敏感的场景,但仅限 Windows。
小结与建议
对于大多数现代 C++ 开发,推荐使用 std::chrono::high_resolution_clock,它简洁、可读性强、跨平台且精度高。如果需要兼容老编译器或特殊平台,再考虑 clock() 或平台专用 API。
基本上就这些,选择合适的方法取决于你的精度要求和运行环境。
大家都在看:
win10提示“此电脑目前无法连接到Windows更新服务器”怎么办 _Win10 无法连接Windows更新服务器修复方法
虚拟机VMware中进行Windows安装的步骤
win11更新后出现“配置Windows更新失败,正在撤销更改”怎么办_Win11更新失败撤销修复方法
Windows安装后C盘空间异常占用分析

































暂无评论内容