vc++中如何测试程序的运行时间
1个回答
展开全部
基本的原理是在执行待测函数之前读取CPU的计数器,执行待测函数之后,再读取一遍,两个计数器之差,再除以CPU主频,就是待测函数执行所用时间。测试精度与CPU主频有关,一般可以精确到微秒量级。
读取CPU计数器的函数:QueryPerformanceCounter()
获取CPU计数器的函数:QueryPerformanceFrequency()
具体操作示范:
首先定义一下所需变量:
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
在待测函数之前加入:
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 获得初始值
在待测函数加入:
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = (dfMinus*1000) / dfFreq;// 获得对应的时间值,单位为为毫秒
dfTim就是待测函数执行所需的时间了。
读取CPU计数器的函数:QueryPerformanceCounter()
获取CPU计数器的函数:QueryPerformanceFrequency()
具体操作示范:
首先定义一下所需变量:
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
在待测函数之前加入:
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 获得初始值
在待测函数加入:
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = (dfMinus*1000) / dfFreq;// 获得对应的时间值,单位为为毫秒
dfTim就是待测函数执行所需的时间了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询