1
 软件工程
1.7.1.4 5.1.4 编码效率

5.1.4 编码效率

1.讨论效率的准则

程序的效率是指程序的执行速度及程序所需占用的内存空间。讨论程序效率应遵循如下几条准则:

(1)效率是一个性能要求,应当在需求分析阶段给出,软件效率以需求为准,不应以人力所及为准;

(2)好的设计可以提高效率;

(3)程序的效率与程序的简单性相关。

一般说来,任何对效率无重要改善,且对程序的简单性、可读性和正确性不利的程序设计方法都是不可取的。

2.算法对效率的影响

源程序的效率与详细设计阶段确定的算法的效率直接相关。在详细设计翻译转换成源程序代码后,算法效率反映为程序的执行速度和存储容量的要求。

转换过程中的指导原则是:

(1)在编程序前,尽可能化简有关的算术表达式和逻辑表达式;

(2)仔细检查算法中的嵌套循环,尽可能将一些语句或表达式移到循环外面;

(3)尽量避免使用多维数组;

(4)尽量避免使用指针和复杂的表;

(5)采用“快速”的算术运算;

(6)不要混淆数据类型,避免在表达式中出现类型混杂;

(7)尽量采用整数算术表达式和布尔表达式;

(8)选用等效的高效率算法。

许多编译程序具有“优化”功能,可以自动生成高效率的目标代码。它可剔除重复的表达式计算,采用循环求值法、快速的算术运算,以及采用一些能够提高目标代码运行效率的算法来提高效率。对于效率至上的应用来说,这样的编译程序是很有效的。

3.影响存储效率的因素

在大中型计算机系统中,存储限制不再是主要问题。在这种环境下,对内存采取基于操作系统的分页功能的虚拟存储管理,给软件提供了巨大的逻辑地址空间。这时,存储效率与操作系统的分页功能直接相关,并非指要使所使用的存储空间达到最少。

采用结构化程序设计,将程序功能合理分块,使每个模块或一组密切相关模块的程序代码长短与每页的容量相匹配,可减少页面调度,减少内外存交换,提高存储效率。

在微型计算机系统中,存储容量对软件设计和编码的制约很大。因此要选择可生成较短目标代码且存储压缩性能优良的编译程序,有时需要采用汇编程序,通过程序员富有创造性的努力,提高软件的时间与空间效率。

提高存储效率的关键是程序的简单化。

4.影响输入/输出的因素

输入/输出可分为两种类型:一种是面向人(操作员)的输入/输出;另一种是面向设备的输入/输出。如果操作员能够十分方便、简单地输入数据,或者能够十分直观、一目了然地了解输出信息,则可以说面向人的输入/输出是高效的。至于面向设备的输入/输出,分析起来比较复杂。从详细设计和程序编码的角度来说,可以提出一些提高输入/输出效率的指导原则:

(1)输入/输出的请求应当最小化;

(2)对于所有的输入/输出操作,安排适当的缓冲区,以减少频繁的信息交换;

(3)对于辅助存储(例如磁盘),选择尽可能简单的、可接受的存取方法;

(4)对于辅助存储的输入/输出,应当成块传送;

(5)对于终端或打印机的输入/输出,应考虑设备特性,尽可能改善输入/输出的质量和速度;

(6)任何不易理解的,对改善输入/输出效果关系不大的措施都是不可取的;

(7)任何不易理解的所谓“超高效”的输入/输出是毫无价值的;

(8)好的输入/输出程序设计风格对提高输入/输出效率会有明显的效果。