社区
数据结构与算法
帖子详情
如何精确知道算法的运行时间?
Tesiro
2007-03-29 04:44:49
本人常听论坛上的有些朋友说起某某程序、算法执行多少多少时间,本人水平有限,虽然也不时编写一些小算法,但却不知各位高手是如何得到的运行时间,请各位高人指教,谢谢了。
...全文
943
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
C/C++中
算法
运行时间
的三种计算方式
C/C++中
算法
运行时间
的三种计算方式
算法
执行时间需通过依据该
算法
编制的程序在计算机上运行时所消耗的时间来度量。而度量一个程序的执行时间通常有两种方法。 事后统计的方法:该方法利用计算机内部的计时功能...
如何
精确
计算出一个
算法
的CPU
运行时间
?
id=211457 你需要多
精确
? GetTickCount可以到18-20ms进度 timeGetTime可以到1ms精度 …… 当然这些都不是C or c++ 标准支持的。 那么就要祭出最牛奔的方法, 直接读取CPU开机以来执行的机器周期数, 一条汇编指令...
运筹优化领域内
精确
算法
、启发式
算法
和深度强化学习
算法
的优劣
综上所述,
精确
算法
适用于对解的精度要求较高且问题规模较小的情况;启发式
算法
适用于处理大规模和复杂度较高的问题,并且能够在较短时间内找到接近最优解的解;深度强化学习
算法
适用于处理具有不确定性和复杂环境的...
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章