编程的坏习惯之资源浪费
永远记住:任何浪费资源的行为都是不可取的。这一点同样适用于计算机编程。
我们在计算机编程的时候,除了需要实现必须的功能之外,还需要考虑两个很重要的指标:时间复杂度和空间复杂度。时间复杂度指的就是程序执行的时间长度,空间复杂度指的是程序执行消耗的内存存储量。这里我把空间复杂度扩展一下,指的是消耗的计算资源,包括内存,CPU,硬盘,数据库开销。
- 尽管现在内存容量已经很大,但是对于程序而言,消耗的内存永远是越少越好!这里只说一些常见的问题:定义变量。我们在定义变量的时候应该遵从小范围原则,就是如果能够定义局部变量,那就不要把这个变量放到全局来,而且如果没有用到,不要对这个对象实例化。所谓的对象实例化,就是new,也就是说定义变量可以,但是在你用到的时候再new。因为程序中有很多情况,所以有时候这个变量定义了却没有被用到,那么如果你刚开始就把对象定义并且实例化了,无疑会浪费不必要的内存空间,所以定义和实例化变量的原则是:不到万不得已不定义。就是说如果不定义这个变量程序进行不下去了,那么这个变量才应该被定义和实例化出来,否则你可以考虑把他放在局部去,在需要的时候才实例化;
- 如果你的程序中同时定义了相同的或者类似的很多个变量或者对象,其实这是很消耗CPU的,这时候可以考虑使用对象的复制(clone),这样能够减少很多不必要的系统开销;
- 数据库的开销是很大的,数据库连接池很必要,另外如果同一个类用到很多次数据库连接,那么尽量不要不停的开闭,这样会造成很大的资源消耗,而是应该拿到一个连接之后把所有的数据库操作全部做完,再释放连接(非常重要)。在计算机中,不用的东西要全部取消掉:变量,类,数据库连接。用完之后要全部处理掉(destroy),当然Java有内存回收机制(双刃剑),情况另行讨论;
- 硬盘的开销在程序使用的时候是很少的,因为现在计算机的瓶颈基本上卡在了硬盘的速度上。因为硬盘的速度很低,所以很多时候我们愿意把数据放到内存当中以提高速度,而实际上,如果一个程序中的有些数据很少用到,那么为了分担内存的压力,是可以把一些数据存放到硬盘上的,比如我们常用的配置文件信息等,这样能够节省一部分的内存空间,毕竟内存空间比硬盘珍贵的多。
其实在编程的过程中这种资源的浪费是很多的,需要从小的地方做起,哪怕是一个小小的变量也要考虑它是不是需要定义。空间复杂度是衡量一个程序好坏的重要标准之一。
版权信息:本文来自老杨个人网站,作者老杨,原文地址,转载请注明出处。
如果喜欢本站,敬请订阅:老杨个人网站。谢谢惠顾!
标签:





编程,对小农夫来说太难了
回复Ta
我平时也就是写点网站代码,还谈不上浪费资源吧~
回复Ta
高端项目,编程好难啊。
回复Ta
不会变成的路过
回复Ta
感觉少了一个,那就是网络开销。综合起来时间就是效率的问题,空间就是精炼的问题,也可说是效率的问题。
回复Ta
我只要能用就行
回复Ta
刚看到你这篇文章。可别说,今天sky发现我在杨式框架中添加了一个读xml流没有关闭……
回复Ta
太高深的理论了。呵呵
回复Ta