c++ 获取操作的精确时间

有很多时候为了测试效率问题,我们需要对时间的精确掌控,mfc给我们封装的时间函数就满足不了我们的需求了。

这时候需要使用下面两个函数

       BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);  
  BOOL QueryPerformanceCounter (LARGE_INTEGER *lpCount);

第一个函数:返回硬件支持的高精度计数器的频率。

第二个函数:得到高精度计时器的值

 

其使用过程也是相当的简单:

直接看源代码:

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
	LARGE_INTEGER Frequency;//计数器频率
	LARGE_INTEGER start_PerformanceCount;//起始计数器
	LARGE_INTEGER end_PerformanceCount;//结束计数器
	double run_time; //运行时间
	QueryPerformanceFrequency(&Frequency); 
	
	for (int i = 0 ; i < 10 ; ++i )
	{
		
		QueryPerformanceCounter(&start_PerformanceCount); 
		
		//运行测试的代码
		Sleep(10);
		
		QueryPerformanceCounter(&end_PerformanceCount); 
		run_time = ( end_PerformanceCount.QuadPart - start_PerformanceCount.QuadPart ) / (double)Frequency.QuadPart;
		cout<<run_time<<endl;
	}
	
	return 0;
}


 

 

 

可以看到,我们平时认为的sleep()函数并不是精确的,

其实sleep()函数受到cpu的影响,但是他的大约值是100ms,所以我们用的时候还是可以放心的

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值