我正在使用clock()C中的函数来获取秒数,但是通过这个小测试程序,我发现我的处理器没有正确计算滴答,因为秒太多与实时不同步,另外我不得不将结果乘以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;
}
Run Code Online (Sandbox Code Playgroud)
clock()函数返回的结果预计不会与实时同步.它回来了
实现与程序使用的处理器时间的最佳近似值,因为实现定义的时代开始仅涉及程序调用
如果你想要一个真实(挂钟)时间的高精度指示,你需要使用一些系统特定的功能,如gettimeofday()或clock_gettime()- 或者,如果你的实现支持它,标准timespec_get功能,在C11中添加.
你的程序printf循环调用.我希望它花费大部分时间等待I/O,屈服于其他进程,以及CPU时间(如clock()转换为秒数)指示实时更慢地前进.我怀疑你乘以100会导致结果失败; clock()/CLOCKS_PER_SEC应该是CPU时间的正确指示.