C++测试/获取代码执行时间

C++ 高级之程序执行时间监听

C++测试/获取代码执行时间(clock方法与dword 方法的区别)

方法一:Clock

clock()捕捉从程序开始运行到clock()被调用时所耗费的时间,这个单位是常熟CLK_TCK:机器时钟每秒所走的时钟打点数

头部需要引入ctime头文件(即:#include<ctime>)
clock_t startTime,endTime;
startTime = clock();
需要测试的程序代码
endTime = clock();

执行结果
在这里插入图片描述

方法二:GetTickCount

GetTickCount是一种函数,GetTickCount返回从操作系统启动所经过的毫秒数,它的返回值是DWORD,
详细解释(GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWORD GetTickCount(void),返回值以32位的双字类型DWORD存储,因此可以存储的最大值是(2^32-1) ms约为49.71天,因此若系统运行时间超过49.71天时,这个数就会归0,MSDN中也明确的提到了:“Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days.”。因此,如果是编写服务器端程序,此处一定要万分注意,避免引起意外的状况)

int main()
{
DWORD dwStart = GetTickCount();
cout<<"fhshdfudshfuisdhfdshfdsfdshfiuhsdihfiudshfhsdlihfdis"<<endl;
DWORD dwEnd =GetTickCount();
cout << "The run time is: " <<dwEnd - dwStart / CLOCKS_PER_SEC << "ms" << endl;
getchar();
return 0;
}

执行结果

在这里插入图片描述

CLOCK与GetTickCount各自的优缺点和区别:

**clock:**程序中经常用time()函数来返回当前系统时间的秒数,来计时或计算时间差。如果需要用到更高精度的时间,就会自然想到用clock()函数。想当然的认为它返回从程序开始tick数,用clock()/CLOCKS_PER_SEC就能得到以秒计数的时间了。然而结果不是这样,看下面的程序log。一行开头是系统时间,后面是clock()算出来的,明显比系统时间要慢不少,也就是说clock计算执行时间的误差较大
GetTickCount: 在要求误差不大于1毫秒的情况下,可以采用GetTickCount()函数,该函数的返回值是DWORD型,表示以毫秒为单位的计算机启动后经历的时间间隔。使用下面的编程语句,可以实现50毫秒的精确定时,其误差小于1毫秒。
对于一般的实时控制
,使用GetTickCount()函数就可以满足精度要求,但要进一步提高计时精度,就要采用QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数。这两个函数是VC提供的仅供Windows 9X使用的高精度时间函数,并要求计算机从硬件上支持高精度计时器。QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数的原型为:
BOOL QueryPerformanceFrequency(LARGE—INTEGER *lpFrequency);
BOOL QueryPerformanceCounter(LARGE—INTEGER *lpCount) ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值