10.1 程序为何运行得如此之慢 - 《.NET 2.0面向对象编程揭秘》 - 免费试读 - book.csdn.net

book.csdn.net/bookfi...

人们总希望能用上更快的软件,如果一个程序对用户操作的响应时间超过30秒,用户一般就会认为这个软件很慢而趋向于放弃不用。
如何改进已有程序的性能,让程序运行得又快又好?这需要经验的累积。经验丰富的程序员往往能正确地判断出影响程序性能的“瓶颈”在何处,对症下药,代码改动不多但效果却很明显。而缺乏经验的程序员可能面对大量的程序代码不知如何下手,盲目优化了不少代码,却没注意到这些代码原来所占的运行时间就很少,再优化也对整个程序的性能影响不大,费力不小,收获不大。
那么,应该怎样优化程序的性能呢?在这方面,Visual Studio 2005又给程序员们提供了哪些帮助?本章介绍这方面的内容。
10.1 程序为何运行得如此之慢
当一个程序运行速度很慢时,首先考虑的不是优化代码,而是去检查算法,重新思考原先解决这个问题的方案是否本身就是笨拙的。
举个例子:某客户信息管理系统客户端程序启动很慢,是不是代码写得不好?最终分析的结果是设计的技术方案不够优化。当此系统的客户端启动时,需要从服务器上下载大量的信息,当网络很拥塞时,在等待数据下载完毕的过程中,程序无法响应用户操作,这会让用户感觉程序速度很慢。因此,此程序的“瓶颈”就在于网络传输数据的速度上。
在网络带宽无法大幅度提高的前提下,治本之策是调整原先的设计方案,减少程序启动时要下载的信息。但有的时候这种方法并不可行,因为技术方案往往是在系统分析设计阶段定下来的,而程序性能问题往往是在开发阶段的后期才出现,除非只是对原有设计方案的小修小补,否则,重新变动设计方案成本太高。
既然不能轻易地一切推倒重来,就只能在程序代码上下功夫了。事实证明,如果能对关键代码进行优化,并引入一些特定的技术,往往也可以得到比较理想的效果。比如,上述客户端程序可以引入多线程技术,先让程序主界面出现,然后在后台持续下载信息,虽然要下载的信息量没有减少,但程序现在可以及时响应用户的操作,改善了用户对此程序的使用体验。
优化程序代码主要分为两个阶段。
第一个阶段为代码分析阶段,其任务主要是弄清楚程序性能的“瓶颈”所在,即最影响程序性能的函数是哪几个。这里有一个二八法则:程序某个处理流程中调用的许多函数都对此流程的执行时间有影响,但往往只有几个关键的函数,其执行时间占了整个执行时间的80%以上,这几个函数数量占被调用函数总数的比例却不到20%。这些函数主要有两个特点,一是被调用次数多,二是本身执行时间长。
能成功地定位到这些影响程序性能最大的函数,就找到了程序性能优化的对象。
第二个阶段为优化代码阶段,仔细分析第一个阶段找到的几个函数的源码,找出其中可以优化的代码进行修改,然后比对新旧代码的运行性能,经过几次实验与对比,就可以得到比较满意的结果。
程序性能的优化一直是高级程序员的主要工作之一,而普通程序员由于经验不足,往往不能很好地完成这一工作。Visual Studio 2005推出之后,其所提供的程序性能分析器可以大大降低优化程序性能对开发经验的要求,使得普通程序员也可以进行这项工作,并在此过程中迅速地积累开发经验。
上一页 首页

本文转自
http://book.csdn.net/bookfiles/404/10040414780.shtml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值