clock函数 使用以及问题

2023-05-11,,

使
         clock()函数是一个计算程序运行时间(其实简略的理解为占用CPU的使用时间)其实如果使用sleep函数,程序是放弃CPU的使用权,直到某个时间的到来,当然就不会存在占用CPU时间的时候,即使是一个计数的循环,对于CPU来说,也是微不足道的。计数单位:CLOCKS_PER_SEC, clock函数返回的值和CLOCKS_PER_SEC存在密不可分的关系,clock()/CLOCKS_PER_SEC返回的才是秒。在Linux下CLOCKS_PER_SEC是1000000, 在windows下是1000

问题

        clock_t是一个32位符号整型,按照理论计算,程序运行24天后,返回值将会由于溢出,变为-1.所以clock函数适合进行简单的运算时间的计数,不适合作为程序中运行时间的计数,目前应用
std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::system_clock::now()).time_since_epoch().count();
进行时间的计数,获取当前系统日期时间的纳秒级计数

注意

       类似会产生溢出的函数有 GetTickCount(),所以推荐使用GetTickCount64()进行替换

最精确的计算时间
LARGE_INTEGER t1, t2, tc;
QueryPerformanceFrequency(&tc);
QueryPerformanceCounter(&t1);
//do something
QueryPerformanceCounter(&t2);
int fCount =( t2.QuadPart - t1.QuadPart)*1000 / tc.QuadPart;

《clock函数 使用以及问题.doc》

下载本文的Word格式文档,以方便收藏与打印。