老杨说话的地方
  • 首页
  • 关于老杨
  • 博客时间
  • 文章分类
    • 人生感悟
    • 信息技术
    • 往事随风
    • 情感随笔
    • 文学创作
    • 生活记录
    • 评论杂谈
    • 人工智能
  • 留言本
我是老杨
张驰有度 宠辱不惊
  1. 首页
  2. 情感随笔
  3. 正文

编程的坏习惯之资源浪费

2009年11月16日 6770点热度 0人点赞 18条评论

永远记住:任何浪费资源的行为都是不可取的。这一点同样适用于计算机编程。

我们在计算机编程的时候,除了需要实现必须的功能之外,还需要考虑两个很重要的指标:时间复杂度和空间复杂度。时间复杂度指的就是程序执行的时间长度,空间复杂度指的是程序执行消耗的内存存储量。这里我把空间复杂度扩展一下,指的是消耗的计算资源,包括内存,CPU,硬盘,数据库开销。

  1. 尽管现在内存容量已经很大,但是对于程序而言,消耗的内存永远是越少越好!这里只说一些常见的问题:定义变量。我们在定义变量的时候应该遵从小范围原则,就是如果能够定义局部变量,那就不要把这个变量放到全局来,而且如果没有用到,不要对这个对象实例化。所谓的对象实例化,就是new,也就是说定义变量可以,但是在你用到的时候再new。因为程序中有很多情况,所以有时候这个变量定义了却没有被用到,那么如果你刚开始就把对象定义并且实例化了,无疑会浪费不必要的内存空间,所以定义和实例化变量的原则是:不到万不得已不定义。就是说如果不定义这个变量程序进行不下去了,那么这个变量才应该被定义和实例化出来,否则你可以考虑把他放在局部去,在需要的时候才实例化;
  2. 如果你的程序中同时定义了相同的或者类似的很多个变量或者对象,其实这是很消耗CPU的,这时候可以考虑使用对象的复制(clone),这样能够减少很多不必要的系统开销;
  3. 数据库的开销是很大的,数据库连接池很必要,另外如果同一个类用到很多次数据库连接,那么尽量不要不停的开闭,这样会造成很大的资源消耗,而是应该拿到一个连接之后把所有的数据库操作全部做完,再释放连接(非常重要)。在计算机中,不用的东西要全部取消掉:变量,类,数据库连接。用完之后要全部处理掉(destroy),当然Java有内存回收机制(双刃剑),情况另行讨论;
  4. 硬盘的开销在程序使用的时候是很少的,因为现在计算机的瓶颈基本上卡在了硬盘的速度上。因为硬盘的速度很低,所以很多时候我们愿意把数据放到内存当中以提高速度,而实际上,如果一个程序中的有些数据很少用到,那么为了分担内存的压力,是可以把一些数据存放到硬盘上的,比如我们常用的配置文件信息等,这样能够节省一部分的内存空间,毕竟内存空间比硬盘珍贵的多。

其实在编程的过程中这种资源的浪费是很多的,需要从小的地方做起,哪怕是一个小小的变量也要考虑它是不是需要定义。空间复杂度是衡量一个程序好坏的重要标准之一。

标签: java 坏习惯 程序 编程
最后更新:2009年11月16日

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

点赞
订阅评论
提醒
guest

guest

18 评论
内联反馈
查看所有评论
刀河
刀河
游客
2009年12月4日 上午9:04

太高深的理论了。呵呵

0
回复
老杨
老杨
作者
回复给  刀河
2009年12月4日 下午2:52

@刀河 这个还好吧,不算高深,都是细节的东西

0
回复
Hope
Hope
游客
2009年11月27日 下午7:31

刚看到你这篇文章。可别说,今天sky发现我在杨式框架中添加了一个读xml流没有关闭……

0
回复
老杨
老杨
作者
回复给  Hope
2009年11月28日 上午9:05

@Hope 这种问题防不胜防

0
回复
开心凡人
开心凡人
游客
2009年11月26日 上午9:47

我只要能用就行

0
回复
老杨
老杨
作者
回复给  开心凡人
2009年11月26日 下午2:53

@开心凡人 这个不是针对用户的,是针对程序员的

0
回复
天缘博客
天缘博客
游客
2009年11月23日 下午8:37

感觉少了一个,那就是网络开销。综合起来时间就是效率的问题,空间就是精炼的问题,也可说是效率的问题。

0
回复
老杨
老杨
作者
回复给  天缘博客
2009年11月23日 下午9:00

@天缘博客 嗯,网络开销其实仍然是内存浪费的问题了,不过这是另外一个编程范围,那就是网络编程

0
回复
天缘博客
天缘博客
游客
回复给  老杨
2009年11月23日 下午10:59

@老杨 网络开销应该算程序设计效率问题,在同一时刻未必会更多内存浪费,不过你的理解已经很上层次了,经验上应该比较丰富,否则很难提炼这些内容,新手提炼出来也未必会说的清楚。
很多只会ASP、PHP或配置个服务器的网友可能很难理解这些内容,很不错,支持你。

0
回复
老杨
老杨
作者
回复给  天缘博客
2009年11月24日 上午8:36

@天缘博客 谢谢,我是写给师弟师妹的,希望他们能理解

0
回复
蓝冰
蓝冰
游客
2009年11月20日 下午12:52

不会变成的路过

0
回复
老杨
老杨
作者
回复给  蓝冰
2009年11月20日 下午3:37

@蓝冰 你应该会,php你不会么?

0
回复
太阳博客
太阳博客
游客
2009年11月19日 下午1:55

高端项目,编程好难啊。

0
回复
老杨
老杨
作者
回复给  太阳博客
2009年11月19日 下午2:18

@太阳博客 也不是什么高端项目了,都是最基本的

0
回复
huangjun
huangjun
游客
2009年11月17日 下午4:04

我平时也就是写点网站代码,还谈不上浪费资源吧~

0
回复
老杨
老杨
作者
回复给  huangjun
2009年11月17日 下午7:50

@huangjun 网站代码如果浪费的话,那么有可能导致你的服务器速度减慢,或者网页代码增多,用户打开的速度变慢,也是有负面影响的

0
回复
小农夫
小农夫
游客
2009年11月17日 下午1:11

编程,对小农夫来说太难了

0
回复
老杨
老杨
作者
回复给  小农夫
2009年11月17日 下午7:49

@小农夫 嗯,比较专业了这个

0
回复

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

搜索
最新 热点 随机
最新 热点 随机
中国是不是体育强国? 成功的必备因素 关于华为 别再侮辱我的智商 春秋航空让人长见识 第二青春计划失败 第二青春计划 模型训练错误RuntimeError: expected scalar type Half but found Float 加载onnx模型进行推理 PyTorch模型转onnx格式
赶集去 晴迷星途09委屈 又是一场战斗 基于Java语言的B/S系统构建(序) 骗子 推荐情景喜剧:大学生同居的事儿 离愁 晴迷星途22阶段胜利 微博客服务 她们何错之有?
最新评论
  • 关于华为上的老杨确实,苹果手机系统还是有优势的。
  • 关于华为上的乱云AKAY自从换了苹果手机后,对手机再没以前那样热爱研究了,主要是系统省心。
  • 第二青春计划失败上的老杨第二都失败了,第三就算了吧。
  • 春秋航空让人长见识上的老杨应该提供一点水,至少给不想买水的人一个选择的空间。
  • 别再侮辱我的智商上的老杨那个很好,很值得。
  • 关于华为上的老杨Next系统基本没广告。大部分广告都可以关掉吧,我记得我写过一个文章,…
  • 第二青春计划失败上的xqiushi开始第三青春计划吧。
  • 春秋航空让人长见识上的xqiushi那个桌板能放下小米多看电子书,还是不错的。 这个矿泉水市面上没有,特供…
  • 别再侮辱我的智商上的xqiushi只投了那100亿的项目。
  • 关于华为上的xqiushi今年我爸的手机也换成华为,家庭里手机基本都是华为。最不满意的一点就是广…

Google java jsp linux QQ wordpress 中国 习惯 人生 公司 决定 博士 博客 同学 国家 大学 学习 实验室 家 小说 工作 开始 思考 情感 手机 技术 推荐 插件 数据库 文件 晴迷星途 朋友 生活 电影 相声 程序 笔记 网站 网络 置顶 美国 评论 软件 音乐 项目

关注公众号

COPYRIGHT © 2020 老杨说话的地方. ALL RIGHTS RESERVED.

THEME KRATOS YANG Modified BY 老杨

鲁ICP备17014997号-4

鲁公网安备 37021302000754号