c - 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 系统上测量时间的替代方法。无论如何,我将使用其中一个作为可能的替代方案来实施一些测试。
解决方案
该
clock()
函数返回程序使用的处理器时间的近似值。
它说的是“处理器时间”,而不是秒表所说的时间量。如果您想测量在现实世界中经过的时间量,您只需要使用其他功能之一。
推荐阅读
- shell - Unix shell 脚本 - 读取具有日期到期的文件并在达到 x 天时通知 -
- dm-script - 将 ROI 添加到 1D 图像(强度图等)
- mysql - 我可以运行 Docker 容器以在另一个 Google Cloud Build 步骤中使用吗?
- azure-storage - 是 Azure 存储共享访问签名 (SAS) REST API 所需的授权标头
- java - 在 Thymeleaf 中选择选项过滤
- python - Python PyPDF2 - getpage 多页
- python - 使用 Google OAuth API 使用 SSO 配置超集 - 缺少范围参数?
- python-3.x - 为什么我收到 ImportError ../lib/libgobject-2.0.so.0: undefined symbol: g_uri_ref based on import of order?
- jquery - AJAX GET返回错误>请求的资源不支持http方法'GET'
- android - TextWatcher - 在 Android Studio 的 editText 中解析负值