您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道 这句话对不对?
算法,机器,时间一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道 这句话对不对?
发布时间:2019-02-08加入收藏来源:互联网点击:
问题补充: 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道,这句话对不对
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
先引用一句医学上的话:抛开剂量谈毒性都是刷流氓。
一个算法执行所耗费的时间,跟算法设计本身、被执行的数据、机器的性能(扩展开来说机器的性能又涉及机器的架构、硬件配置、时钟频率、运行温度等)都是有关系的的。
我们作为学术范畴的讨论时,出于研究性质,必须要剥离一些因素,才能进行剩余因素的比较,也就是做的是相对性比较。这就像买2根黄瓜,你先拿出4根来称,卖家称了告诉你要5块,你从中拿出你需要的两根,再让卖家称,称完告诉你要3块,那么你就知道你手里的只需要2块,科学家通过这种方式避免了其他因素(在这个例子里就是黑心秤因素)对结果造成影响。
那么回到正题,我们评估一个算法执行的时间,其实是为了评估这个算法的好坏,待测数据是一样的,这点是可以人为控制的,理想机器来说也可以认为是一样的,这样用数学的方式根据CPU的规律,可以评估出这个算法在执行时间上比另一个算法快/慢,当然,这是为了评估比较两个或两个以上的算法上用的。
考虑到你问的是一个算法,再做深入一点的考量,你一定要做算法运行时间的理论计算(也就是绝对需时的计算),也是可以的,只是很复杂,首先你要对这个算法选定语言进行编程,然后编译并取得机器语言或者汇编语言的算法版本,然后配合测试用例统计这个程序做了多少次cpu加法、乘法、移位、存取、跳转等操作,再配合机器架构和程序结构,看有多少条是并行的,然后根据CPU的时钟脉冲,需要多少的上升沿、下降沿、周期,配合时钟频率算出来需要多少时间,那么在硬件确实配合你(CPU能以绝对恒定的频率走)的情况下,理论与实测会是符合的。这种计算过于复杂,其实并没有什么意义,远不如相对估算有用。
作为拓展类比,去医院打针,你可以看到有些药品(尤其是麻醉剂)医生是根据体重来配的,每个人每单位体重所产生的药物效果其实也不一样的,但我们没有必要一定要万分精确,就类似这样的道理。
上一篇:苹果手机微信内存不足怎么办?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |