社区
数据结构与算法
帖子详情
如何精确知道算法的运行时间?
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;
}
如何衡量一个
算法
的好坏?
算法
是解决一类问题准确而完整的描述,它是程序设计的灵魂。如何衡量一个
算法
的好坏呢?是不是实现的代码越简洁
算法
越好呢?...时间复杂度衡量一个
算法
运行的快慢;空间复杂度衡量一个
算法
运行所需要的额外空间。
C#
精确
计算
算法
运行时间
介绍如何利用C#
精确
计算
算法
的
运行时间
。核心方法是利用QueryPerformanceFreQuency()和QueryPerformanceFrequency() 两个Win32API
如何
精确
计算出一个
算法
的CPU
运行时间
?
id=211457 你需要多
精确
? GetTickCount可以到18-20ms进度 timeGetTime可以到1ms精度 …… 当然这些都不是C or c++ 标准支持的。 那么就要祭出最牛奔的方法, 直接读取CPU开机以来执行的机器周期数, 一条汇编指令...
C/C++中
算法
运行时间
的三种计算方式
算法
执行时间需通过依据该
算法
编制的程序在计算机上运行时所消耗的时间来度量。而度量一个程序的执行时间...但是有时候在同一台机器上,想对不同
算法
进行比较或是想
知道
一个程序究竟需要运行多长时间,该方法就有了用
如何衡量一个
算法
的优劣?
时间复杂度主要衡量的是一个
算法
的运行速度,而空间复杂度主要衡量一个
算法
所需要 的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机 行业的迅速发展,计算机的...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章