软件性能低下,有很多原因:
1、编码时容错的考虑。
每个模块在编码时,为了安全起见,必然会对每个输入的参数先进性检测,验证其输入参数的正确性。代码的每一个模块几乎都要进行这样的检测,导致一个输入的参数,从用户输入,到最终处理,要经过很多次重复的检测,做了许多无用功。
2、代码模块化设计
为了降低软件设计的复杂度,我们在设计软件时,要求软件每一个模块只是完成一小块的功能,并且把各种各样的情况,逐步统一到一起,统一为标准的接口,从而降低代码的复杂度。这样的例子很多,代码的模块化,分层设计等等,都是基于这个目的。
这样的问题在于,我们将北京的三环比喻为大的统一的接口,所有汽车不论去哪,都要先上三环。如果我要从建国门去复兴门,就必须先到国贸,然后走三环到公主坟,然后再到复兴门,绕一大圈。这样设计的好处在于,降低了道路设计的复杂性,每个地点只要设计通往三环的道路就可以了。问题在于,对于某些点的效率就低了,他需要绕一个大圈。
以上两点,都涉及编码习惯和设计方法,不是说这种方法有问题,其为我们带来了代码扩展性、健壮性,对于大部分代码是适合的。但对于某一些热点的路线,影响了整体的性能,我们就需要为其开辟专门的路线,减少该路线上重复的检测,对于某些特点的执行路线,打破原来代码模块化的设计,这样同时也会带来一定的复杂度。
3、需求的变化
在软件发展过程中,其需求是不断变化的,好得软件设计就是要达到方便扩充来满足需求的变化。在需求变化时,比如某个需求不要了,这时软件还是能好好工作的,开发人员往往并不会把这部分代码去掉,这就导致在代码中会有一些冗余的判断。在增加需求时,开发人员往往考虑的是如何使改动代码最小,来满足现有的需求,即使这种方法在逻辑上不是十分合理,这就好比在代码上打补丁。
一件好好的衣服,就这样在需求不断变化的情况下,补丁越来越多,编码也越来越不合理,性能越来越低下,最后不得不重写。
4、兼容的需要
为了和以往的软件保持兼容,一些不好的算法也不能轻易的扔掉,这时只能考虑如何能在上面改动改动,既满足了新的要求,又何以前的保持兼容,最后的结果必然不合理的,也是效率低下的。
阅读(1598) | 评论(0) | 转发(0) |