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

在C++中测量程序运行时间,常用的方法有多种,根据精度需求和平台不同可以选择合适的方式。以下是几种常见的计算程序执行时间的方法。
使用 chrono 高精度时钟(推荐)
chrono 是 C++11 引入的时间处理库,提供了高精度、跨平台的计时方式,适合测量代码段的执行时间。
#include iostream>#include
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<:chrono::microseconds>(end - start);
std::cout
return 0;
}
你可以将时间单位改为 milliseconds 或 nanoseconds 来获取不同精度的结果。
使用 clock() 函数(传统方法)
来自
立即学习“C++免费学习笔记(深入)”;
#include#include
int main() {
clock_t start = clock();
// 执行代码
for (int i = 0; i // 工作
}
clock_t end = clock();
double elapsed = static_cast
std::cout
return 0;
}
注意:clock() 测量的是 CPU 时间,多线程或系统等待时可能不准确。
Windows 平台使用 QueryPerformanceCounter
在 Windows 上,可以使用高精度性能计数器进行更精确的测量。
#include#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
return 0;
}
这种方法精度极高,适合性能敏感的场景,但仅限 Windows。
小结与建议
对于大多数现代 C++ 开发,推荐使用 std::chrono::high_resolution_clock,它简洁、可读性强、跨平台且精度高。如果需要兼容老编译器或特殊平台,再考虑 clock() 或平台专用 API。
基本上就这些,选择合适的方法取决于你的精度要求和运行环境。










