C++计算一个程序运行时间,精确到毫秒

用clock_t声明两个变量start,finish;
start = clock()
//运行一个函数
finish = clock()
得到的 finish-start 是执行这个函数所用的时间吧 单位是什么啊?是秒呢?毫秒呢?还是微秒呢?有的地方再除以个 CLK_TCK 或CLOCKS_PER_SEC是什么意思呢?怎样得到毫秒或微妙的精确度啊?

clock()返回的是CPU时钟计时单元,而CLOCKS_PER_SEC它用来表示一秒钟会有多少个时钟计时单元,所以正确的运行时间是(finish-start)/CLOCKS_PER_SEC,这样就能得到执行了多少秒,要得到毫秒的话再乘以1000.0,微妙再乘以1000.0追问

如果要得到毫秒 是直接finish-start还是(finish-start)/CLOCKS_PER_SEC*1000呢?怎么和楼下有点不一样

追答

这个看CLOCKS_PER_SEC的值了,VC中确实定义了CLOCKS_PER_SEC的值是1000,所以
finish-start或者(finish-start)/CLOCKS_PER_SEC*1000.0都能够得到毫秒

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-02
单位是毫秒
除以个 CLK_TCK 或CLOCKS_PER_SEC是为了得到秒值(秒=毫秒/1000)

在VC6.0中有关于CLK_TCK的说明:   
#if !__STDC__ || defined(_POSIX_)   
#define CLK_TCK CLOCKS_PER_SEC   
_CRTIMP extern int daylight;   
_CRTIMP extern long timezone;   
_CRTIMP extern char * tzname[2];   
_CRTIMP void __cdecl tzset(void);   
#endif   

在VC++6.0中类似的还有CLOCKS_PER_SEC 。其值为1000。   
#define CLOCKS_PER_SEC 1000   

因此VC6.0中CLK_TCK的值和CLOCKS_PER_SEC 的值是1000。追问

意思是我要精确到毫秒 直接finish-start就可以了吧

第2个回答  2011-12-02
Return Value

clock returns the number of clock ticks of elapsed processor time. The returned value is the product of the amount of time that has elapsed since the start of a process and the value of the CLOCKS_PER_SEC constant. If the amount of elapsed time is unavailable, the function returns –1, cast as a clock_t.

Remarks

The clock function tells how much processor time the calling process has used. The time in seconds is approximated by dividing the clock return value by the value of the CLOCKS_PER_SEC constant. In other words, clock returns the number of processor timer ticks that have elapsed. A timer tick is approximately equal to 1/CLOCKS_PER_SEC second. In versions of Microsoft C before 6.0, the CLOCKS_PER_SEC constant was called CLK_TCK.

msdn上的解释。。

C++计算一个程序运行时间,精确到毫秒
clock()返回的是CPU时钟计时单元,而CLOCKS_PER_SEC它用来表示一秒钟会有多少个时钟计时单元,所以正确的运行时间是(finish-start)\/CLOCKS_PER_SEC,这样就能得到执行了多少秒,要得到毫秒的话再乘以1000.0,微妙再乘以1000.0

在c++中,运行时我想让时间显示出来,特别是毫秒显示出来啊,谢谢了,C++...
这种方式能精确到微秒级别,能够统计出你的程序从执行开始到结束所用的时间,但是如果你的程序在执行过程中有等待,这部分时间也会计算在内,特别是在多进程调度的情况下。所以得到的时间实际会大于程序真正执行所需要的时间。精确统计 - 计算所用的CPU时间:clock_t cstart, cend;double spend;cstart ...

C++下四种常用的程序运行时间的计时方法总结
前后时间一减(start-end)就得到程序的运行时间了。对于程序运行时间的计时方法,我们总结了四种常用方法:首先介绍精度不是很高(>=10ms)的方法:一、clock()C系统调用方法,适用于windows和linux。返回单位是毫秒。二、GetTickCount()Windows API,返回从操作系统启动到现在所经过的毫秒数(ms),精确度...

VC++编程中 如何获取当前时间(精确到毫秒)
1、直接利用Pentium CPU内部时间戳进行计时的高精度计时手段。2、在 Intel Pentium以上级别的CPU中,有一个称为“时间戳(Time Stamp)”的部件,它以64位无符号整型数的格式,记录了自CPU上电以来所经过的时钟周期数。由于目前的CPU主频都非常高,因此这个部件可以达到纳秒级的计时精度。3、因为RDTSC不...

在C++ 中获取以秒(或毫秒)为单位的系统时间
首先,C++标准库提供了一个古老但直观的方式,即通过C风格的函数std::time()。这个函数默认返回当前的秒数,但若需要毫秒级精度,你需要手动处理。另一种现代方法是利用chrono库,通过std::chrono::system_clock类获取系统实时时间,先调用now()获取时间点,再通过time_since_epoch计算与Unix纪元的差值,...

c++计算时间差(精确到秒)
开始时间:输入的小时转化为秒+输入的分钟转化为秒+输入的秒 输出时间:开始时间的小时转化为秒+开始时间的分钟转化为秒+开始时间的输入的秒 输出结果:输出时间-开始时间 int CountSecond(int H,int M,int S){ return (H*3600+M*60+S);} int main(void){ int KSTimer=0;int SCTimer=0;KS...

求C++获取系统时间源代码,精确到毫秒
time.wSecond,time.wMilliseconds);} \/ SYSTEM 结构成员如下:SYSTEMTIME STRUCT { WORD wYear ; 年 WORD wMonth ;月 WORD wDayOfWeek ;星期,0=星期日,1=星期一...WORD wDay ;日 WORD wHour ;时 WORD wMinute ;分 WORD wSecond ;秒 WORD wMilliseconds ;毫秒 }SYSTEMTIME ENDS \/\/***\/ ...

[C++]如何读取系统时间呢?要精确到微秒~
可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()\/CLOCKS_PER_SEC来计算一个进程自身的运行时间:void elapsed_time(){ printf("Elapsed time:%u secs.\\n",clock()\/CLOCKS_PER_SEC);} 当然,你也可以用clock函数来计算你的机器运行一个...

C++获取系统时间和控制
int ms=(k-3600000*hm)\/60000; \/\/ms为分钟数 int se=(k-3600000*hm-60000*ms)\/1000; \/\/se为秒数(除以1000是因为k精确到毫秒)s.Format("%d:%d:%d",hm,ms,se); \/\/输出时、分、秒 如果是想格式输出系统当前时间 用Format函数 则:CTIME t;CString s = t.Format( "%H, %M %S"...

如何用c++计算空循环所用时间?
cout << "采用计时方式一(精确到秒):循环语句运行了:" << (end-start) << "秒" << endl;\/\/计时方式二 struct timeb startTime , endTime;ftime(&startTime);\/\/你的循环 ftime(&endTime);cout << "采用计时方式二(精确到毫秒):循环语句运行了:" << (endTime.time-startTime....

相似回答