程序的效率和水平常常被挂在程序员的嘴边。他们推崇高效的程序,他们把运行快的程序看成水平高的程序。但是很多程序员并不清楚什么是高效的程序,如何才能编制高效的程序。他们把编制高效程序看作一种奢望、一种追求。
程序运行的快和慢是需要比较的,其前提是相比的程序必须是要完成相同的功能,而且程序运行的硬件环境和软件环境必须一样。不同的人因其程序的不同,程序运行的时间就不同。因此,程序就有了差距。即使相同的人,因对程序进行了完善和变更,也同样会导致程序的不同,进而导致了程序运行时间的不同。没有这些前提谈论程序的效率是没有意义的。
我们不能一概而论的认为,程序越快越好。不同程序对效率的要求是不相同的。现在许多程序员只知道程序越快越好;不知道程序效率改进是一个无止境的过程;不知道程序的快慢是有一个度的;不知道人们对效率的追求是需要成本的;不知道程序快慢与用户感受相关的。而这些正是我最为担心的。我认为无论什么程序只要有用户使用才有价值,用户的感受才是程序效率的目标。只有树立这个目标之后,我们改进程序效率才会有动力,我们改进程序效率才有一个尽头。我们可以把程序归为三种情况:
1、 批处理
是指系统业务功能终止后或其它事物终了后,对其终了前的数据进行加工的过程,这个过程可能涉及到多个程序。有的批处理时间很长几小时到十几小时都有,有的批处理需要几分钟到几十分钟。批处理时间主要涉及到数据量的大小、处理结果的大小、处理逻辑和处理逻辑实现。其中处理逻辑的实现就是批处理程序。一般而言,数据量大、处理结果内容多、处理逻辑复杂程序运行时间就长。要特别指出的有的批处理时间会超过24小时,影响企业第二天的业务系统的运行,这样批处理就会对企业业务产生很重大的影响。
不同的批处理程序的编写能使批处理时间延长和缩短。例如,A程序员编写这个批处理程序需要10个小时,B程序员编写这个程序只要5个小时、C程序员可能要20个小时。可见程序的效率是多么的重要,也难怪许多人认为程序效率高就是水平高呢。
2、 联机功能
联机功能是指操作人员使用一个联机的应用系统中运行一个业务功能。例如,信息计算、保存信息、查询信息、打印信息等。
联机功能运行时间应该是有限的,应该是以秒和分钟为单位的,不象批处理是以小时为单位。因为操作人员始终处于等待状态,他们是无法容忍长时间等待的。正因为如此,对于程序员来说虽然缩短时间要求不象批处理那样长,但是总体时间要在限定的几分钟内,这样程序员压力就更大了。
3、 单个程序
单个程序是指为了某种数学运算或数据处理或其它处理编制的一个程序。这种程序的特点是一个人操作;运行到结束就是一个周期。例如:显示hello word程序、进行积分程序、从串口读出数据程序。单个程序的运行时间就很难说了可以用0-无限来表示。
很多单个程序都是由程序员一人来完成的,因此,其运行时间长短只能由其自己的程序的改进来感知。
无论程序在什么情况下我都认为,对程序的效率评判权应该交给使用程序的操作人员,而不是程序员。很多程序员占在自己的角度上认为自己的程序已经编得很好了,没有办法再缩短时间了,这种想法是很错误的。程序员应该提高自己编程能力,使得程序能够在操作人员可容忍的时间内完成。从理论上来说,只有运行时间无限延长的程序,没有运行时间不可缩短的程序
例如,我们在编写批处理的时候,客户的容忍度是4个小时,你编的程序已经达到了1个小时,那你就不必再花时间修改你的程序达到半个小时。(除非你的时间足够多)。
又例如,我们在编制联机处理的时候,客户容忍度是2秒钟,但是你现在的程序要运行1分钟,那你就有必要去修改你的程序,尽量达到客户的要求。
又例如,我们在编制单个程序时候,我们就是为了练习编写程序,重点在程序的功能实现上,而不太关心,程序的效率。那我们就没有必要去花时间修改自己的程序。(等自己会编程序后再来考虑程序效率的问题)
以上就是要帮程序员树立不同程序的容忍度。有了这个容忍度我们再来看看我们如何在这个容忍度之中提高自己的程序效率。