首页 > 解决方案 > C (time.h) clock_t = clock() 产生错误的持续时间

问题描述

一些示例代码:

clock_t clock_start = clock();

for( ... ) { ... do stuff ... }

clock_t clock_stop = clock();

double duration = 1000.0 * (clock_stop - clock_start) / CLOCKS_PER_SEC;
printf("time: %f ms\n", duration);

当我运行此代码时,它产生了以下输出:

time: 4756.869000 ms

这显然是错误的。我估计实际花费的时间约为 10 秒,并通过秒表验证了这一点。

似乎缺少大约 2 - 3 个因子。

是否有可能CLOCKS_PER_SEC在我的系统上被定义为无意义的东西?(我使用的是带有 Raspberry Pi OS 的 Raspberry Pi 3。)有什么方法可以检查吗?还是更有可能是其他原因导致了问题。

我知道在 posix 系统上测量时间的替代方法。无论如何,我将使用其中一个作为可能的替代方案来实施一些测试。

标签: ctimeraspberry-pi

解决方案


clock()函数返回程序使用的处理器时间的近似值。

它说的是“处理器时间”,而不是秒表所说的时间量。如果您想测量在现实世界中经过的时间量,您只需要使用其他功能之一。


推荐阅读