实际编程时的代码效率,如何评估?

hangweijin 2008-11-03 03:56:32
大家在实际代码中的时候,有些情况下需要对代码的效率进行评估。这种情况下,大家一般是如何评估其效率的?

内容包括CPU前后占用的总计算量,前后花的时间,程序占用最大内存,更多.....

===
例如http://topic.csdn.net/u/20081102/11/1C6136BB-AD44-49E1-868B-D848816456F6.html
上面有一帮高手在吵架,象我这种人得花NN的时间才能读懂他们在讨论什么。我希望通过请教该问题,把他们的代码拿下来,实践性的判断他们谁更强大。

而且这对以后帮助也不少的。
...全文
255 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
once_and_again 2008-11-10
  • 打赏
  • 举报
回复
80-----------20 rule
redleaves 2008-11-10
  • 打赏
  • 举报
回复
楼主要评估效率,那就要有个目标. 如果能达到目标, 那就OK.
如果漫无目的的讲效率,那就像是无头苍蝇....最后搞的无从下手.
要知道,程序的三大要素(正确性,可达性,稳定性)里对性能的要求并不高.
另外,算法这个东西很怪,说起来,程序应该是和算法等价的.但一般狭义的算法只是指那些逻辑密集或数值计算密集的片段...
于是乎,就有了算法和架构之分...
对于程序来说,这两部分实际是相辅相承的..对程序的性能影响都很大.在实际的项目里,你所要做的就是权衡,以达到你的设计目标.
说了一圈,最后的结论就是要有的放矢...
至于评估的方式,那就要看你的设计了.这无非就是达到什么标准,开销要在什么水平...
hangweijin 2008-11-10
  • 打赏
  • 举报
回复
从OS的角度,最实在的方法是先获取系统的所有硬盘[读数据磁头]的个数。
==>然后每个磁头[和所管辖的区域]分配一个线程;但是如果一个磁头分配了2个线程,对程序的影响也是有限的。

比较通用的代码就是获取分区数,一个分区一个线程....




===
但是性能还要观察...
hangweijin 2008-11-10
  • 打赏
  • 举报
回复
我要问的是从宏观的角度来看一段代码的执行效率.....

说到点子上就是工程技术。
----
比如程序,查找系统的所有文件名含有“txt”的文件,重命名成"cc",如c:/mytxttxts/20081110.txt==>c:/myccccs/200811010.cc


这个时候,就应该使用多线程技术,先列举所有的分区,然后每个分区开一个线程。...瞧,算法一点帮不上忙...
hangweijin 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 iambic 的回复:]
算法很重要,一般用不着。
[/Quote]



gooooooooooooooooooooooooooooooooooooooooood
iambic 2008-11-06
  • 打赏
  • 举报
回复
写好之后,如果发现慢,用profiler跑下。
关键是写的时候注意下,别故意写差代码。要对自己有信心。
基本的算法复杂度应该清楚。
剩下的听天由命吧。
yzfyzyl 2008-11-06
  • 打赏
  • 举报
回复
yzfyzyl 2008-11-06
  • 打赏
  • 举报
回复
可以看算法导论对时间复杂度和空间复杂度的分析

咋总是翻那帖子啊,我都不想说了,把代码细心分析一下,结论就有了



飞燕算法群:46520219
hangweijin 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cnn_505 的回复:]
时间复杂度,空间复杂度。
[/Quote]

这是就是算法吧?
hangweijin 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lockhall 的回复:]
内存占有
CPU使用率
执行时间
[/Quote]

在代码中需要调用哪些API呢?
僵哥 2008-11-06
  • 打赏
  • 举报
回复
实际当中,更多应该考虑的是综合效率.然后找出瓶颈热点再具体解决.

随着硬件和软件水平的不断提升,很多以前觉得是低效率的代码,可能在新的平台下却会有更高的效率.或者可能在单一的不受影响的情况下工作和受到周边环境影响这样两种情况下会得到完全不一样的结论.
iambic 2008-11-06
  • 打赏
  • 举报
回复
算法很重要,一般用不着。
yzfyzyl 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hangweijin 的回复:]
你就知道算法算法,但是在大规模代码的组织中,算法已经很次要了。


算法是做低层模块的,如果多个模块一起合作工作的话,那么....还用算法吗?
[/Quote]

你这是打算玩自相矛盾呢?还是扯淡?
你不去学一些算法分析,你怎么知道代码效率?你想要知道评估效率的方法,但又说算法很次要

我都不清楚你在表达什么,我叫你看算法复杂度分析的书,你却给我这种回复
那我还是不说话了



飞燕算法群:46520219
Longinc 2008-11-06
  • 打赏
  • 举报
回复
UP
hangweijin 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yzfyzyl 的回复:]
可以看算法导论对时间复杂度和空间复杂度的分析

咋总是翻那帖子啊,我都不想说了,把代码细心分析一下,结论就有了



飞燕算法群:46520219
[/Quote]]


你就知道算法算法,但是在大规模代码的组织中,算法已经很次要了。


算法是做低层模块的,如果多个模块一起合作工作的话,那么....还用算法吗?
lockhall 2008-11-04
  • 打赏
  • 举报
回复
内存占有
CPU使用率
执行时间
xiaopoy 2008-11-04
  • 打赏
  • 举报
回复
时空
hmm,物体是存在于时空之中的。
cnn_505 2008-11-03
  • 打赏
  • 举报
回复
时间复杂度,空间复杂度。
帅得不敢出门 2008-11-03
  • 打赏
  • 举报
回复
profile
TeamStudio
Axapta X++代码执行效率(代码优化)检测工具祥解-code profiler
http://blog.csdn.net/AXWolfer/archive/2008/04/28/2337598.aspx

检测代码运行效率 GetTickCount()的使用
http://blog.chinaunix.net/u/15793/showart_262479.html
hangweijin 2008-11-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 weidong0210 的回复:]
我不是高手
[/Quote]
欢迎引用高手言论,这样你们就是高手了哈


把题目再详细点哈,我打算在linux下做C++开发,所以希望给点实践性的建议,最好是工具介绍。不过方法不限
加载更多回复(2)

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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