- 0
- 0
- 约2.41万字
- 约 19页
- 2017-11-08 发布于浙江
- 举报
下载
第7章 性 能
他过去所做的许诺,是非凡的;
而他今天的执行 ,则什么也不是。
莎士比亚,《亨利八世》
很久以前,程序员花费了他们的主要精力,想方设法把程序的效率弄得高一点。因为在
那个时候计算机非常慢,而且非常昂贵。今天的机器便宜多了也快多了,因此,对绝对效率
的需求也就大大地减弱了。我们难道还值得去考虑执行性能吗?
当然需要。但是,只有在问题确实是非常重要,程序真正是非常慢,而且确有预期能在
保持正确性、坚固性和清晰性的同时把程序弄得更快的情况下,才应该做这件事情。一个快
速的程序如果给出的是错误结果,那么它一点也没有节省时间。
优化的第一要义是不做。程序是不是已经足够好了?应该了解程序将如何使用以及它将要
运行于其中的环境,把它搞得更快有什么益处吗?为大学课程作业而写的程序不会再去使用,
速度一般是没有关系的。对于大部分个人程序、偶尔用用的工具、测试框架、各种试验和原
型程序而言,通常也都没有速度问题。而在另一方面,对一个商业产品或者其中的核心部件,
例如一个图形库,性能可能就是非常关键的。因此,我们还是需要理解如何去考虑性能问题。
什么时候我们应该试图去加速一个程序?我们该如何做,又能够期望得到些什么呢?本
章要讨论如何能使程序运行得更快些,或者少用些存储。速度通常是人们最关心的,因此也
是我们讨论的主题。空间 (主存、磁盘) 出问题的情况少一点,但也可能是至关重要的,所以我
们也要在这里花一些时间和空间 (篇幅) 。
正如我们在第2章看到的,最好的策略就是使用那些能适应工作需要的、最简单最清晰的
算法和数据结构。然后再度量其性能,看是否需要做什么改变;打开编译系统的选择项,生
成尽可能快的代码;考虑对程序本身做什么改变才能有最大作用;一次做一个改变并重新进
行评价。在这期间始终保留最简单的版本,用它作为测试版本的对照物。
测量是改进性能过程中最关键的一环,推断和直觉都很容易受骗,所以在这里必须使用
各种工具,如计时命令或轮廓文件等等。性能改进与程序测试有许多共同之处,包括许多技
术,如自动化,认真保存记录,用回归测试以保证所做的改变维持了正确性,而且没有损害
以前的改进等。
如果算法选择是明智的,程序也写得很仔细,那么你就可能发现完全没有进一步加速的
必要性。对于写得很好的代码,很小的改变往往就能解决它的性能问题,而对那些设计拙劣
的代码,经常会需要大范围地重写。
7.1 瓶颈
让我们从消除一个瓶颈的事例开始,事情出在我们局部环境里的一个关键程序上。
这里的原文是p e r f o r m e n c e ,在本章题目和正文中均译为“性能”或“执行性能”。—译者
第 7章 性 能计计131
下载
外来的电子邮件汇集之后通过一台称为网关的机器,这台机器将内部网络与外部的
I n t e r n e t连接起来。外来的电子邮件消息—对于一个有数千人的团体,每天是数以万计的。
这些邮件到达网关并传送到内部网。这个分隔把我们的私有网络和公共的 I n t e r n e t 隔离开,并
使这个团体所有的人只需要公开一台机器的名字 ( 网关的名字) 。
网关有一项工作是过滤掉所有的“垃圾邮件” ( s p a m ) ,即那些不请自来的邮件,它们通
常宣扬一些没什么价值的服务。通过早期的成功试验之后,这个垃圾邮件过滤程序被安装好,
作为提供给网关用户的一项固定服务。这之后,一个问题就出现了。该网关机器原来已经很
陈旧,已经非常忙,现在则完全被压垮了。造成这种情况的原因是过滤器程序占用了太多的
机器时间 —比对消息的所有其他处理所需时间加在一起还要多得多,这使消息队列被填满,
在系统的哽噎挣扎之中,消息发送被成小时地拖延。
这是性能真有问题的一个例子:程序对于完成指定工作而言太慢,而人则由于其工作拖
延感到非常不舒服。这种程序确实必须大大地加快运行速度。
对问题稍做简化,这个垃圾邮件过滤程序的工作方式大致是这样:每个外来消息被当作
您可能关注的文档
最近下载
- 云南省2024年中考地理试卷附解析答案.pdf VIP
- 青年拔尖人才支持计划自然科学类申报书-广东石油化工学院.pdf VIP
- 医学影像学第一节食管与胃肠道影像学.pptx VIP
- 电力安全操作规程培训课件.pptx VIP
- 一锅法铜催化合成苯并硒唑类衍生.doc VIP
- 病人突发心脏骤停的应急预案演练脚本(2篇).docx
- OECD -二十国集团 经合组织公司治理原则2023.docx
- 2026年树立和践行正确政绩观专题研讨个人发言材料+“一把手”在树立和践行正确政绩观学习教育读书班开班式上的讲话.docx VIP
- 2023年江西新余中考历史真题及答案.doc VIP
- 2025年江西新能源科技职业学院单招职业技能测试题库及完整答案1套.docx VIP
原创力文档

文档评论(0)