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

#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毫秒吗?请问肿么回事?

绝地无双
浏览 775回答 3
3回答

慕田峪9158850

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()。

肥皂起泡泡

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

蛊毒传说

是因为除了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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python