代码初探->能耗

将作为一名程序员,进一步确定的目标是成为一个架构师,那么能耗必须考虑。

写代码与能耗的关系不言自明,现在假设将网络视频监控的监控识别算法放在客户端,既不利于算法的保护,也不利于算法的优化,更不利于降低能耗。

谈到能耗,每一台服务器都是吃电器,如果我不是老板,就不考虑耗电的情况,但是如果作为这个公司的一员,也有义务从能耗的角度去写代码。

一个65W的CPU跑一年,需耗电568度电,一度电假定为1.2元,那么一个CPU就需要耗电681.6元,这个价钱可以再买个CPU了。

对于一个1500W的GPU跑一年,耗电13104W,一度电假定为1.2元,那么一个GPU就需要耗电15724.8元,这个价可以上京东买个目前最高端的GPU了,当然还没算上冷却耗电,电源效率这些问题。

降低能耗的方法:

一:优化算法

下面源自一段代码测试的数据:

我们可以看到,能耗与代码执行的时间肯定有直接关系。跑50秒一般比跑3秒要耗能,所以在写代码时,算法设计的好可以节能。

由于最近学习一篇论文,接触了intel的SSE指令集,所以就出来了学习这个的热情,其实对于程序设计,个人的看法是好的算法是关键,但是一个好的编程功底必不可少。

其实算法优化有很多工作可以做:多线程处理,分布式处理,数据优化等等。

二:减少数据迁移

在处理图像时,最头疼的就是数据太多,一个三维图像数据MATLAB读取的话会显示空间不足,一个二维的FFT变换去处理一张壁纸图片,可能就会卡死你的程序,在这些处理的过程中,其实就是把硬盘上的图片数据读到内存上,然后在读到缓存上处理,算法的不同,数据迁移的方式就不同。

假设一张图片从硬盘读到内存上耗能xW ,内存写到硬盘上耗能yW,那么就是一张图片的读写就是x+yW,写一帧视频到硬盘上耗能zW ,如果遇上一个菜鸟程序员,写个代码处理视频时将图片保存到硬盘里,而不是保存视频的话,那么保存10万帧视频的话,多耗能100000(x+y-z)W。

减少数据迁移方法:高效使用寄存器,高效使用共享内存,减少不必要的数据迁移操作。

三:硬件优化

在配置机器时,处理器性能至关重要,性能越好意味着能耗可能越少,耗电可能越少,一个处理器跑一年的电费至少相当于购买该处理器的价格。

制冷,温度过高,机器性能会下降,当然温度过低,性能也会下降,维持一个适应的温度,对于机器的运行也是很重要。

小结:

代码越少比不意味着能耗越少,代码执行效率高也并不意味着能耗低,重要的是我们需要了解计算机构造,编程语言的原理,熟练搭配,争取做一个低功耗的程序员,节能的程序员,低功耗的程序等于执行程序耗资少,也等于减少碳排放。

代码初探->能耗,布布扣,bubuko.com

时间: 2024-10-07 12:44:51

代码初探->能耗的相关文章

[-blogs-]Cimg代码初探

Cimg代码初探 程序设计最为激动人心的地方,在于丰富的并且容易被查阅到资料.比如对于图像处理,固然有Opencv等较为丰富.被广泛知晓的类库:也有其他很多具有一定特色的类库.在这段时间里面,我对CImg图像处理库进行了初步研究,并且做小结如下: 一.类库总体情况 总体感觉,CImg是一个"小家碧玉"类型的类库.这里的"小",不仅体现在代码结构上.体现在代码数量上,我觉得很大程度上也体现在代码内容上:比如代码的缩进都是采用最节省空间的方法,大量采用了连续处理的方法,

delphi中formatFloat代码初探(在qt下实现floatformat的函数)

由于项目需要,需要在qt下实现floatformat的函数.之前写过一个,但是写得不好.决定重新写一个,参考delphi xe2下的实现.把xe2下的相关代码都看了一遍,xe2的代码思路在这里贴出来.xe2下的代码在system.sysutils下,核心函数是InternalFloatToTextFmt.它有汇编的版本跟纯pascal的版本.汇编看不懂,参考的是纯pascal的版本. 整体流程是: 1)解析format格式化字符串 [delphi] view plain copy Result 

页面定制CSS代码初探:页面变宽 文本自动换行 图片按比缩放

一.初识博客 初写博客,先在设置里选了个喜欢的模板 第一眼就爱上了呢!那极简的风格,我喜欢!!但是,应用后,却发现... 纳尼!模板上右侧那张漂亮的图片呢?!我的怎么什么都没有.没有图片好难看啊,瞬间无爱了,设置里找了下,->博客侧边栏公告 <-,在这里,放了张宽200px的图,好看多了马上,还是有图才不会那么单调~ 二.认识CSS 过了几天,打算写篇博,发现了一个重大的问题,怎么默认的宽度这么窄?那我放图片怎么办,而且,2边留那么多空白不浪费吗,留个5%就够了吧.于是乎,开始了2天的全折腾.

LDA进阶

转自:http://blog.csdn.net/hxxiaopei/article/details/8034308 http://blog.csdn.net/huagong_adu/article/details/7937616 代码初探 http://blog.csdn.net/yangliuy/article/details/8457329 yangliuy实现的代码 第一篇:PLSA及EM算法 第二篇:LDA及Gibbs Samping 第三篇:LDA变形模型-Twitter LDA,Ti

iap 详细

附:本文来自IOS6-Tutorias的翻译,本做笔记之用,故语言简练. 一,可用的IAP类型: Non-Consumable:用户只需购买一次,不需要再次购买,即可在多台设备上拥有之(restore技术). Consumable:用户可以购买多次(不限定次数).例如金币. Auto-Renewable Subscriptions:为了收到app更新的内容,用户需要定期支付款项.(目前仅适用于杂志或者新闻类型的app). Free Subscriptions:类似于Auto-Renewable

Servlet&amp;&amp;Jsp 概述

主题 Servlet的作用 构建动态网页 Servlet代码初探 Servlet与其他技术的对比 Jsp的作用 Servlet的作用 Servlet是在web服务器或应用服务器上用来动态生成html的java程序. 起到中间件的作用.将web浏览器或者http客户端与http服务器或者应用程序服务器连接起来.为什么需要它?因为有的应用程序服务器并不支持http,那么所有http客户端都将不能从中获取数据或执行操作,因此,servlet负责彼此交流的桥梁. (1)读取客户发送的显示数据 表单等中的

错误和问题解决的成本

问题描写叙述 错误 数据收集 根本原因 版本号   组件:数据修复           在一个实际成本组织中,(平均,先进先出,后进先出) 一个或更 多的下面情况可能发生: 1.导航到物料成本历史表单上的数量信息,与现有量表单的数量不匹配的记录 2. 一些物料前期已计成本的数量与前面的事务处理历史表单的数量不匹配 3. 全部的库存值报表与事务处理值报表不匹配 4. 存货层次成本更新表单的总数量与现有量数量表单不匹配(只在先进先出/后进先出) 5.这些症状的不论什么一个意味着 MMT-CQL不匹配

初探12306售票算法(二)-java代码实践

周五闲来无事,基于上一篇关于初探12306售票算法(一)-理论,进行了java编码实践供各位读者参考(以下为相关代码的简单描述) 1.订票工具类 1.1初始化一列车厢的票据信息 /** * 生成Ticket信息 * * @param train * @return */ public static List<Ticket> initTicketList(Train train) { List<Ticket> result = new ArrayList<Ticket>(

PHP分页初探 一个最简单的PHP分页代码的简单实现

PHP分页代码在各种程序开发中都是必须要用到的,在网站开发中更是必选的一项. 要想写出分页代码,首先你要理解SQL查询语句:select * from goods limit 2,7.PHP分页代码核心就是围绕这条语句展开的,SQL语句说明:查询goods数据表从第2条数据开始取出7条数据.在分页代码中,7表示每页显示多少条内容,2通过公式计算表示翻页数,通过传入不同参数替换"2"的值,即可筛选出不同的数据. index.php: ? 1 2 3 4 5 6 7 8 9 10 11 1