高精度方法:
有很多时候为了测试效率问题,我们需要对时间的精确掌控,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;
另一种
#include <ctime> //计时用的头文件
#include <iostream>
using namespace std;
int main() {
time_t start,end,time; /*注意计时所用的变量名称*/
/*程序开始执行,开始计时*/
start=clock(); //获得开始的时间,单位为毫秒
/*程序执行过程……*/
for(int i=0;i<=100;i++) cout << i << ' ';
cout << endl;
/*程序结束执行,结束计时*/
end=clock(); //获得结束时间
time=end-start;//这里的时间是计算机内部时间
cout<<"endTime - beginTime = Time"<<endl;
cout << end <<" - "<<start<<" = "<<time<< endl;
system("pause");
return 0;
}