这个问题一问,可能很多人都摸不着头脑。我们写了这么多年的代码,从没考虑费不费电的问题呀!再说,运行程序的电脑费不费电跟我们有什么关系呀!其实,可能由于算法问题,你写的代码正在耗费着大量的本不该费的电能,全球变暖也有程序员的责任。
当今是互联网时代,互联网后台系统是最核心的支撑平台,数据库,中间件等等服务器其程序主导着系统的结构。程序员在设计模块时,往往只考虑逻辑功能的快速实现和对基础件的依赖,对算法的设计往往不是非常的追求。多年的互联网后台高负载高并发系统设计经历表明,好的算法在同样负载情况下,可以起到用更少的机器和更少的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的重要环节
程序员危机如何破_你确定要写代码吗_
在IT行业中,编程不仅仅是工作,有时它也可以成为表达情感的工具。"程序员表白专用程序"就是一个这样的创意项目,它利用JavaScript(简称JS)这门强大的前端编程语言来为程序员们提供一个独特的方式来向心仪的对象...
标题 "你是合格的程序员吗?—合格程序员应该具备的12种能力" 指向了一个讨论合格程序员所需技能的主题。在这个行业中,成为一个优秀的程序员不仅仅是掌握编程语言那么简单,还需要一系列综合能力。以下是对这些能力...
《程序员级高级程序员级程序设计》是一门深入探讨高级编程技术的课程,旨在提升程序员的技能水平,使之能够更高效、更智能地进行软件开发。本课程覆盖了多个关键的知识点,包括但不限于算法优化、数据结构、并发编程...
《程序员的呐喊》的作者是业界知名的程序员——来自Google的Steve Yegge,他写过很多颇富争议的文章,其中有不少就收录在本书中。《程序员的呐喊》是他的精彩文章的合集。 《程序员的呐喊》涉及编程语言文化、...
本资源"程序员如何写程序"旨在深入浅出地引导程序员们理解软件开发的全过程,从构思到实现,再到测试与发布。通过C#的经典实例,我们将一步步探索这一过程。 首先,软件开发的初始阶段是需求分析。在这个阶段,...
程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用程序源码 (demo)程序员表白专用...
为什么程序员必须写技术博客_以及如何写_博客在面试时的加分可不是一点点,别再犹豫了,快行动起来!
程序员项目交接文档概要 IT 项目交接文档概要是程序员在项目交接过程中的重要文件,它对项目的开发、测试和维护起着至关重要的作用。本文档概要将对程序员项目交接文档的主要内容进行概要介绍。 人事模块是程序员...
windows桌面圣诞树可执行exe程序,程序员专属娱乐方式,动态闪亮的圣诞树 windows桌面圣诞树可执行exe程序,程序员专属娱乐方式,动态闪亮的圣诞树 windows桌面圣诞树可执行exe程序,程序员专属娱乐方式,动态闪亮的...
作为一名程序员,你需要有编程序的能力和热情。编程序不仅仅是写代码,还需要有逻辑和严谨的思维方式。如果你仅仅想得到一份高薪水的工作,而不想编程序,那么这份工作不适合你。 2. 学文的还是学理的? 程序员...
程序员如何写文档
《Java Web程序设计任务教程》是一本专注于Java Web开发实践的书籍,由中国工信出版社出版,由传智播客旗下的高端教育品牌“黑马程序员”精心编著。这本书旨在帮助读者掌握Java Web开发的核心技术和实践方法,通过一...
这个“程序员高级程序员程序设计辅助理解软件”压缩包文件,显然是为那些寻求晋升或者增强自身技能的软件开发人员准备的学习资源。其中包含的知识点涵盖了多个方面,特别强调了数据结构这一核心编程概念,同时也与...