C++中推荐用std::chrono::steady_clock测运行时间,精度高且不受系统时间干扰;需多次运行取中位数或去极值平均,并在-O2/O3优化下终端直接执行以避免干扰。
在C++中计算程序运行时间,最常用且推荐的方式是
使用 库——它精度高、跨平台、类型安全,适合现代C++性能分析。
std::chrono 提供了纳秒级(取决于硬件和系统)的高精度时钟。核心思路是:在代码段前后分别获取时间点,相减后转换为所需单位(如毫秒、微秒)。
std::chrono::high_resolution_clock(或更明确的 steady_clock,避免系统时间跳变影响)time_point 记录起止时刻,用 duration_cast 转换单位system_clock 测性能,它可能受系统时间调整干扰示例:
单次测量易受系统调度、缓存预热、CPU频率波动等干扰。真实性能分析应重复执行多次,排除异常值后取平均或中位数。
立即学习“C++免费学习笔记(深入)”;
测出“假慢”或“假快”往往不是代码问题,而是测量方式不当:
-O0)会严重失真;性能分析应在 -O2 或 -O3 下进行std::endl(会强制刷新缓冲区)chrono 适合粗粒度计时,但要深入知道哪一行/哪个函数最慢,需借助专业工具:
gprof(需编译加 -pg)或更现代的 perf(无需重新编译,支持火焰图)Instruments(附带 Time Profiler)Intel VTune
,配合日志可辅助分析调用热点(非实时性能采样)