clock()仅测CPU时间,不计I/O等待等真实耗时;需用static_cast转换并除以CLOCKS_PER_SEC;测挂钟时间应改用std::chrono::high_resolution_clock。

clock() 只能测 CPU 时间,不能反映真实耗时;在多线程、I/O 或系统调度频繁的场景下,结果常严重偏低。
clock() 返回的是 CPU tick 数,不是秒
调用 clock() 得到的是程序自启动以来占用的 CPU 时钟周期数(类型为 clock_t),需除以 CLOCKS_PER_SEC 才得秒数。它不计等待时间——比如 sleep(1)、fread 等待磁盘或网络时,clock() 几乎不增长。
- 单线程纯计算密集型任务中,结果接近真实耗时
- 若程序中有大量
std::this_thread::sleep_for、文件读写、std::cin阻塞等,clock()值可能只有几十毫秒,而实际已过数秒 - 在多核或多线程环境下,
clock()行为未标准化,glibc 中通常只累加主线程的 CPU 时间
正确用法:两次调用 + 类型转换
必须成对使用,且注意整数溢出和精度丢失:
start
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











