vc++中如何测试程序的运行时间

2026年09月23日 16:28
有1个网友回答
网友(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就是待测函数执行所需的时间了。