linux下c++的clock()统计时间怎么不准呢?

stormier 发布于 2016/01/23 16:42
阅读 2K+
收藏 0
clock_t t1=clock();
sleep(10);

cout<<clock()-t1<<endl<<(clock()-t1)/CLOCKS_PER_SEC<<endl;

输出

88

0

这是嘛玩意啊?

加载中
0
k
kchr

注意非实时操作系统的时钟精度都是粗略的,高要求的情况应该使用专用计时硬件。

历代更替,提供时间的函数很多。已知的最佳建议是

1) 计时,也就是获取当前的时间,使用 gettimeofday(),精度 1 毫秒。x86_64 下是用户态实现,无上下文切换且不陷入内核,效率非常高。

clock_gettime() 精度可到纳秒,但需要陷入内核,效率较低。

2) 定时,使用 timerfd_create() / timerfd_gettime() / timerfd_settime()。实现确保不使用 SIGALRM 信号,避免冲突和多线程问题。精度可到纳秒。

0
l
lheric

整型除法截断了

精确计时不要用clock()

s
stormier
好的,我用time(NULL)
0
changnet
changnet
sleep精度本来就不高,clock_gettime
0
修改登录密码
修改登录密码

88/CLOCKS_PER_SEC =???


0
木兰宿莽
木兰宿莽
gettimeofday()可以精确到微秒,但我至今没有找到能精确到纳秒的方法!有的话告诉我一声!
返回顶部
顶部