如何精确知道算法的运行时间?

Tesiro 2007-03-29 04:44:49
本人常听论坛上的有些朋友说起某某程序、算法执行多少多少时间,本人水平有限,虽然也不时编写一些小算法,但却不知各位高手是如何得到的运行时间,请各位高人指教,谢谢了。
...全文
936 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangbch 2007-03-29
  • 打赏
  • 举报
回复
在windows平台,至少有3个级别的函数取得系统时间,他们是:

1。GetTickCount,返回在开机后的毫秒数,两次调用它的差即为程序运行时时间,这个函数的精度只能到毫秒级。

2。使用API 函数 QueryPerformanceCounte,这个函数的精度可到微秒级,下面给出为封装的函数(currTime)的代码。

3。使用一条CPU指令,RDTSC,这条指令可取得自开机后经历的CPU时钟的个数,CPU时钟频率越高,用这条指令得到的时间的的精度也愈高,如果你的CPU主频为2G,那么他的精度为0.5*10^-9秒,关于更详细的资料,请参阅:http://www.cppfans.com/articles/system/cpuspd_usdly.asp


static LARGE_INTEGER freq;

static bool initFreq()
{
if ( !QueryPerformanceFrequency( &freq) )
return false;
else
return true;
}

double currTime() //使用高精度计时器
{
if (freq.QuadPart==0)
{
bool bRet=initFreq();
if (!bRet)
return 0;
}
LARGE_INTEGER performanceCount;
BOOL result=QueryPerformanceCounter( &performanceCount );
double time= performanceCount.HighPart * 4294967296.0 + performanceCount.LowPart;
time=time / ( freq.HighPart * 4294967296.0 + freq.LowPart);
return time;
}

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧