为了账号安全,请及时绑定邮箱和手机立即绑定

关于clock()函数返回值的精度?

关于clock()函数返回值的精度?

绝地无双 2019-02-24 11:07:41
#include<iostream>#include<stdio.h>#include<time.h>#include<windows.h>using namespace std;int main(void){clock_t start,end;start=clock();Sleep(1000);end=clock();cout<<"The time was:"<<(end - start) /CLK_TCK<<endl;return 0;}在vc6.0下运行该程序,sleep()括号内为1000~1999的返回值都为1秒,不是说clock()的精度为1毫秒吗?请问肿么回事?
查看完整描述

3 回答

?
慕田峪9158850

TA贡献1794条经验 获得超8个赞

clock()函数返回值为1毫秒,就是0.001秒
clock函数
功 能: 返回处理器调用某个进程或函数所花费的时间。
用 法: clock_t clock(void);
说明:clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。具体见第一个例子。注意:本函数仅能返回ms级的计时精度(事实上能够达到的计时精度大致与操作系统的线程切换时间相当,在windows平台上,极限精度大致是15~16ms)。如果需要us级别的计时精度,Linux系统可以使用库函数:gettimeofday()。

查看完整回答
反对 回复 2019-03-27
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

clock()函数返回值是毫秒,问题是你打印时却是 (end - start) /CLK_TCK
CLK_TCK是1000
end-start = 1000 再除1000 就是 1 咯

查看完整回答
反对 回复 2019-03-27
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

是因为除了CLK_TCK导致的,我改了一下:
Sleep(1700);
end=clock();
cout<<"The time was:(end - start)="<<(end - start)<<" CLK_TCK="<< CLK_TCK<<" (end - start)/CLK_TCK="<<(end - start)/CLK_TCK<<endl;
输出结果如下:
The time was:(end - start)=1703 CLK_TCK=1000 (end - start)/CLK_TCK=1.703

查看完整回答
反对 回复 2019-03-27
  • 3 回答
  • 0 关注
  • 774 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号