首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 实际编程时的代码效率,如何评估? [已结帖,结帖人:hangweijin]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hangweijin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-03 15:56:32 楼主
    大家在实际代码中的时候,有些情况下需要对代码的效率进行评估。这种情况下,大家一般是如何评估其效率的?

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

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

    而且这对以后帮助也不少的。
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuyu637
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-03 16:00:481楼 得分:0
    一般也就是记录测试case的运算时间,和运算的时候所占的内存。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • weidong0210
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-03 16:00:492楼 得分:0
    我不是高手
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hangweijin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-03 16:17:323楼 得分:0
    引用 2 楼 weidong0210 的回复:
    我不是高手

    欢迎引用高手言论,这样你们就是高手了哈


    把题目再详细点哈,我打算在linux下做C++开发,所以希望给点实践性的建议,最好是工具介绍。不过方法不限
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zmlovelx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-03 16:26:164楼 得分:70
    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
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnn_505
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-03 16:26:205楼 得分:0
    时间复杂度,空间复杂度。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaopoy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-04 22:42:376楼 得分:0
    时空
    hmm,物体是存在于时空之中的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lockhall
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-04 22:45:117楼 得分:0
    内存占有
    CPU使用率
    执行时间
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hangweijin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 11:27:488楼 得分:0
    引用 7 楼 lockhall 的回复:
    内存占有
    CPU使用率
    执行时间


    在代码中需要调用哪些API呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hangweijin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 11:30:239楼 得分:0
    引用 5 楼 cnn_505 的回复:
    时间复杂度,空间复杂度。


    这是就是算法吧?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yzfyzyl
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 11:40:0710楼 得分:0
    可以看算法导论对时间复杂度和空间复杂度的分析

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



    飞燕算法群:46520219
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yzfyzyl
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 11:42:2011楼 得分:0
    楼主可以看看这个
    http://topic.csdn.net/u/20081105/15/3752c1fa-a8df-4666-90fb-457776076530.html



    飞燕算法群:46520219
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iambic
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      4

      4

    发表于:2008-11-06 12:01:3212楼 得分:0
    写好之后,如果发现慢,用profiler跑下。
    关键是写的时候注意下,别故意写差代码。要对自己有信心。
    基本的算法复杂度应该清楚。
    剩下的听天由命吧。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hangweijin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 14:19:3113楼 得分:0
    引用 10 楼 yzfyzyl 的回复:
    可以看算法导论对时间复杂度和空间复杂度的分析
     
    咋总是翻那帖子啊,我都不想说了,把代码细心分析一下,结论就有了
     
     
     
    飞燕算法群:46520219
    ]


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


    算法是做低层模块的,如果多个模块一起合作工作的话,那么....还用算法吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Longinc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 14:22:1914楼 得分:0
    UP
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yzfyzyl
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 16:43:2215楼 得分:0
    [Quote=引用 13 楼 hangweijin 的回复:]
    你就知道算法算法,但是在大规模代码的组织中,算法已经很次要了。


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

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

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



    飞燕算法群:46520219
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iambic
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      4

      4

    发表于:2008-11-06 18:47:4516楼 得分:0
    算法很重要,一般用不着。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • unsigned
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 6

      3

    发表于:2008-11-06 19:11:5717楼 得分:0
    实际当中,更多应该考虑的是综合效率.然后找出瓶颈热点再具体解决.

    随着硬件和软件水平的不断提升,很多以前觉得是低效率的代码,可能在新的平台下却会有更高的效率.或者可能在单一的不受影响的情况下工作和受到周边环境影响这样两种情况下会得到完全不一样的结论.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hangweijin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 11:05:4818楼 得分:0
    引用 16 楼 iambic 的回复:
    算法很重要,一般用不着。



    gooooooooooooooooooooooooooooooooooooooooood
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hangweijin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 11:11:0119楼 得分:0
    我要问的是从宏观的角度来看一段代码的执行效率.....

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


    这个时候,就应该使用多线程技术,先列举所有的分区,然后每个分区开一个线程。...瞧,算法一点帮不上忙...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hangweijin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 11:15:3120楼 得分:0
    从OS的角度,最实在的方法是先获取系统的所有硬盘[读数据磁头]的个数。
    ==>然后每个磁头[和所管辖的区域]分配一个线程;但是如果一个磁头分配了2个线程,对程序的影响也是有限的。

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


    ===
    但是性能还要观察...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • redleaves
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 11:30:1121楼 得分:30
    楼主要评估效率,那就要有个目标. 如果能达到目标, 那就OK.
    如果漫无目的的讲效率,那就像是无头苍蝇....最后搞的无从下手.
    要知道,程序的三大要素(正确性,可达性,稳定性)里对性能的要求并不高.
    另外,算法这个东西很怪,说起来,程序应该是和算法等价的.但一般狭义的算法只是指那些逻辑密集或数值计算密集的片段...
    于是乎,就有了算法和架构之分...
    对于程序来说,这两部分实际是相辅相承的..对程序的性能影响都很大.在实际的项目里,你所要做的就是权衡,以达到你的设计目标.
    说了一圈,最后的结论就是要有的放矢...
    至于评估的方式,那就要看你的设计了.这无非就是达到什么标准,开销要在什么水平...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • once_and_again
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 12:07:3522楼 得分:0
    80-----------20 rule
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved