这个问题一问,可能很多人都摸不着头脑。我们写了这么多年的代码,从没考虑费不费电的问题呀!再说,运行程序的电脑费不费电跟我们有什么关系呀!其实,可能由于算法问题,你写的代码正在耗费着大量的本不该费的电能,全球变暖也有程序员的责任。
当今是互联网时代,互联网后台系统是最核心的支撑平台,数据库,中间件等等服务器其程序主导着系统的结构。程序员在设计模块时,往往只考虑逻辑功能的快速实现和对基础件的依赖,对算法的设计往往不是非常的追求。多年的互联网后台高负载高并发系统设计经历表明,好的算法在同样负载情况下,可以起到用更少的机器和更少的io操作的作用。而这些因素正是可以大大降低电能的重要部分。
操作系统的电源管理模块,cpu等硬件的设计现在也在往节能降耗的方向发展,而程序员为了节约电能能做到就是改善算法,这样做同时还能解决运营成本问题。
仅举以往的案例的一个,有家web2.0公司在设计开发一个叫做“好友列表”的模块时总是随着用户的增多而性能低下,请我们帮忙解决,经过研究发现,他们的这个好友表已经存储了2亿条记录。他们对用户id建立了索引,然后每次添加好友都是顺着这个表依次添加。
分析:
系统根据用户id在索引中查询到该id,然后指到对应的磁盘块读取对应的记录。可惜的是记录数的增大和数据存储的无规律特点,系统磁盘指针往往为了读到一个块,进行跳跃式操作,全程下来至少100次io操作。在这个过程中,浪费着无用的电能,也拖累的性能。
解决:
经过需求分析,这家公司认为好友的个数不会大于100。我们的新设计开始了,首先,把这个用户id的所有最多100个好友存在一个连续地方,开辟了512*m字节大小作为存储100个好友信息的块大小。这样,在获取好友列表时,只需1次io操作即可全部获得。经过公司的测试部门压力测试验证,性能提高了大约40%,关键的是电能耗费大大降低。
提高后台系统的负载和并发量,优化io存取算法,数据结构等等都是解决之道。当前普遍的情况是,公司能够买大量的服务器作为压力分担,不会或很少考虑对系统进行算法优化。但是别忘了,为网民提供服务和自身盈利之外,为了节约电能,造福全球人类,难道不是一个进行算法优化的合法理由吗?节约电能,预防全球变暖,互联网公司做贡献了时候到了!
http://www.distributed-cluster.com/
分享到:
相关推荐
也许有人的人会说,不能完全取代程序员,但是能提高程序员的工作效率,不也就等于节约了人手,变相的导致一部分程序员下岗吗?这其实,又是不了解IT行业的人错误看法。程序员工作效率提高了,只会导致程序员的工作...
②禁得起熬夜,一个程序不是一天两就能做好的,有时写程序刚进入状态,此时即使夜已深,也不能(不愿)停下来。 ③要严谨细心,程序设计语言不是人的自然语言,本身就是严格的,程序员有一处不小心,都可能导致所...
代码写得好,绩效却不高?程序员的沟通和思考有多重要?
老刘心语#13如何打造乐观心态?程序员分享随身必备
听说你的代码还在扑街?程序员小伙科普大厂常用代码管理开源工具和软件_科学运用Git和SVN也是DevOps的重要环节
程序员危机如何破_你确定要写代码吗_
程序员表白专用
《程序员的呐喊》的作者是业界知名的程序员——来自Google的Steve Yegge,他写过很多颇富争议的文章,其中有不少就收录在本书中。《程序员的呐喊》是他的精彩文章的合集。 《程序员的呐喊》涉及编程语言文化、...
程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用...
为什么程序员必须写技术博客_以及如何写_博客在面试时的加分可不是一点点,别再犹豫了,快行动起来!
这是我为自己写的一款表白的程序,并且己用它表白成功,于是几经努力把它完成为一个完整的程序,这是我准备完成的程序之爱系列第一辑,希望能多做几辑吧。
《JavaWeb程序设计任务教程》一书源代码,中国工信出版社出版,黑马程序员编著,传智播客旗下高端教育品牌“黑马程序员”项目实战配套用书
要判断一个程序员是不是好的程序员,主要看他写的代码,因为程序员最重要的事是写代码。 即便不去理解代码的意图,只要看一眼,好的程序员写的代码与差的程序员写的代码基本上就可以看出来。好的程序员写的代码,...
程序员如何写文档
程序部_初级程序员笔试题目 程序部_初级程序员笔试题目 程序部_初级程序员笔试题目
程序员交接文档!IT项目交接文档概要
还在为没找到合适的翻译软件苦恼吗? 程序员的最佳翻译软件,精准,配备多国语言
程序员的九重境界,你是第几重?看看这位高手写的有关程序员的境界。从第一层到达最高层,你是第几层?请进来看看。程序员 java 境界 php SSH struts