`
javasee
  • 浏览: 925910 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

你写的程序费电吗?程序员也影响全球变暖

阅读更多

这个问题一问,可能很多人都摸不着头脑。我们写了这么多年的代码,从没考虑费不费电的问题呀!再说,运行程序的电脑费不费电跟我们有什么关系呀!其实,可能由于算法问题,你写的代码正在耗费着大量的本不该费的电能,全球变暖也有程序员的责任。

当今是互联网时代,互联网后台系统是最核心的支撑平台,数据库,中间件等等服务器其程序主导着系统的结构。程序员在设计模块时,往往只考虑逻辑功能的快速实现和对基础件的依赖,对算法的设计往往不是非常的追求。多年的互联网后台高负载高并发系统设计经历表明,好的算法在同样负载情况下,可以起到用更少的机器和更少的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/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics