使用
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
进行时间的计数,获取当前系统日期时间的纳秒级计数
注意
类似会产生溢出的函数有 GetTickCount(),所以推荐使用GetTickCount64()进行替换
最精确的计算时间
LARGE_INTEGER t1, t2, tc;
QueryPerformanceFrequency(&tc);
QueryPerformanceCounter(&t1);
//do something
QueryPerformanceCounter(&t2);
int fCount =( t2.QuadPart - t1.QuadPart)*1000 / tc.QuadPart;
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。