gpt4 book ai didi

c - 为什么我从 clock() 获得的值与实时不同步?

转载 作者:太空宇宙 更新时间:2023-11-04 00:29:34 25 4
gpt4 key购买 nike

我在 C 中使用函数 clock() 来通过滴答获取秒数,但是通过下面这个小测试程序我发现我的处理器没有正确计算滴答,因为秒数与实时时间太不同步,此外我不得不将结果乘以 100 以获得更类似于秒数的结果,但我认为这没有意义。在这个程序中,10s 几乎相当于现实生活中的 7s。有人可以帮助我使 clock() 函数更精确一点吗?

我将 Beaglebone Black rev C 与内核 3.8.13-bone70、Debian 4.6.3-14 和 gcc 版本 4.6.3 一起使用

提前致谢!

这是我的测试程序:

#include <stdio.h>
#include <time.h>
int main(){

while(1)
printf("\n%f", (double)100*clock()/CLOCKS_PER_SEC);

return 0;
}

最佳答案

clock() 函数返回的结果不应与实时同步。它返回

the implementation’s best approximation to the processor time used by the program since the beginning of an implementation-defined era related only to the program invocation

如果您想要高精度指示真实(挂钟)时间,您需要使用一些系统特定的函数,例如 gettimeofday()clock_gettime() -- 或者,如果您的实现支持它,标准的 timespec_get 函数,在 C11 中添加。

您的程序在循环中调用 printf。我希望它花费大部分时间等待 I/O,屈服于其他进程,并等待 clock() 指示的 CPU 时间(当转换为秒时)前进得更慢那个实时。我怀疑你乘以 100 会影响你的结果; clock()/CLOCKS_PER_SEC 应该是 CPU 时间的正确指示。

关于c - 为什么我从 clock() 获得的值与实时不同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29905228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com