一则关于flash的耗能(散热的关系的实测
- 引子
事实上,我既不是flash开发人员也不是乔帮主的fans,所以在html5和flash之争时,我是没有立场的。这次对flash耗能的测试完全是个倒叙的结构——现有结果,后有这个耗能的研究。起因来自我的09年5月买来的Lenovo 300G530这款鸡肋笔记本电脑。在室温30度的时候开机温度就到达五六十度,更牛逼的是我好几次玩wow副本的时候自动关机(后面知道是100℃过热保护),使用pifiform speccy测试cpu100°,经过我肉手测试,很温暖,就像冬天里的一把火。这让我对这个夏天电脑温度的特别关注,不管是浏览网页,还是运作wow,我都会开着speccy监视,而且使用机身悬空,手动风扇等多种措施,测试发现情况并没有好转。
今日,使用迅雷看看看,在非全屏的情况下,被两侧不停闪烁的“防滑文胸”的广告(两侧轮播广告的视频网站模式不知道谁先做的)惹急了,有了干掉广告的冲动,灵感于greaseMonkey,使用IE developer tools 的display:none;(delete不如firebug容易)干掉了,然后看了看speccy,大吃一惊,结果就有了这篇文章。
- 测试目的
谁在燃烧我的cpu,graphic card,这是个问题 ?
鉴于我干掉两侧flash广告产生的结果,让我有理由相信flash是个值得注意的家伙,所以我的目的就是找出谁是发热的真凶,是flash?总结计算机耗能 (使用温度标度) 的影响 因素 ,然后能总结出一个形式化的表达 。 - 测试环境
软件环境 Operating System
MS Windows 7 Ultimate 32-bit
运行程序
在ie8中迅雷看看DVD版电影《刚果惊魂》
硬件环境 CPU
Intel Mobile Core 2 Duo T6400 @ 2.00GHz
Penryn 45nm Technology
RAM
2.0GB Dual-Channel DDR2 @ 332MHz 5-5-5-15
Motherboard
LENOVO JIWA1 (U2E1)
Graphics
Generic PnP Monitor @ 1280x800
256MB GeForce 9300M GS (Lenovo)
Hard Drives
250GB Hitachi Hitachi HTS543225L9A300 ATA Device (IDE)
Optical Drives
HL-DT-ST DVDRAM GSA-T50N ATA Device
ELBY CLONEDRIVE SCSI CdRom Device
Audio
High Definition Audio Device测试环境常量 1m网速不变
运行程序数量不变
运行程序种类不变
测试环境变量 flash数量
迅雷看看播放器和广告播放器
player是否全屏
下载上传活动
(option)其他程序
一般的浏览器
一些程序
测试指标项 温度
使用piriform speccy 测试直接映射耗能
上传下载
使用networx测试,以比特数映射cpu活动
全屏
是或者否
其他程序
简单的使用是否打开来映射cpu活动 - 约定
H(x) 表示耗能(heat)
f(x) 表示是否全屏(fullscreen)
t(x) 表示上传下载(transfer)
o(x) 表示其他程序(others)
c(x) 表示播放器数量(count) - 测试步骤
按照一般测试的规则(具体我不知道,瞎猜的) ,固定变量,只容许单变量。
- 没有变量
常量 f(x)=t(x)=o(x)=c(x)=0 变量 条件 #无
截图
结果#基本温度65°
结论 win7下桌面环境里温度为65°,高出室温35°+
- 改变播放器数量
常量 非全屏,有上传下载,有若干其他程序, 变 量 条件#2个flash对象,c(x)=2;f(x)=M,t(x)=N,o(x)=P;
解释#电影播放器和广告都在
截图 #
结果#基本温度87°~
条件#1个flash对象,c(x)=2;f(x)=M,t(x)=N,o(x)=P;
解释#电影播放器存在,广告flash设置为display:none
截图 #
结果#基本温度79°
条件#0个flash对象,c(x)=2;f(x)=M,t(x)=N,o(x)=P;
解释#迅雷看看页面,没有flash
截图 #
结果#基本温度64°~
结论 忽略2个flash的区别,认为一个活动flash相当于耗能增加6~13°。 - 改变全屏状态
常量 1个flash对象,有上传下载,有若干其他程序, 变 量 条件#全屏,1个flash对象f(x)=是,c(x)=1,t(x)=N,o(x)=P;
解释#全屏播放
截 图 #
结果#基本温度79°
条件#非全屏,1个flash对象f(x)=否,c(x)=1;t(x)=N,o(x)=P;
解释#全屏播放
截 图 #
结果#基本温度79°
条件#全屏,2个flash对象f(x)=否,c(x)=2;t(x)=N,o(x)=P;
解释#全屏播放
截 图 #
结果#基本温度87°
条件#非全屏,2个flash对象f(x)=否,c(x)=2;t(x)=N,o(x)=P;
解释#全屏播放
截 图 #
结果#基本温度87°
结论 flash是否全屏不影响耗能 - 下载上传活动
下面这图说明下载和上传与耗能的曲线走势常量 非全屏,有若干其他程序, 变 量 条件#有下载上传,1个flash对象;c(x)=1,f(x)=N,o(x)=P;
解释#只有下载,上传活动很小忽略
截图 #
结果#基本温度76°
条件#没有下载,1个flash对象;c(x)=1,f(x)=N,o(x)=P;
解释#没有下载,上传活动忽略
截图 #
结果#基本温度74°
条件#有下载上传,2个flash对象;c(x)=2,f(x)=N,o(x)=P;
解释#只有下载,上传活动很小忽略
截图 #
结果#基本温度87°
条件#很小下载,2个flash对象;c(x)=2,f(x)=N,o(x)=P;
解释#很小下载,上传活动忽略
截图 #
结果#基本温度79°
结论 下载影响耗能但是影响不大,100KB下载大概增温2°
在flash变动时,温度变化很明显,加上下载的影响温差达到8°。
截图 # - 其他程序的影响
常量 非全屏,没有flash对象,没有全屏,没有上传下载 变 量 条件#包含speccy,mspaint,普通的浏览器(没有浏览含flash的页面)
解释#
截图 #
结果#基本温度66°
条件#包含speccy,没有mspaint,普通的浏览器(没有浏览含flash的页面)
解释#
截 图 #
结果#基本温度64°
结论 普通程序对耗能影响可以忽略,(虽然有2°的差距,我认为这个是噪音)
- 没有变量
- 结论
通过测试我们发现让我的电脑燃烧的主凶是flash,从结果里可以排除了其他程序、全屏、上传下载的噪音干扰。
- flash确实是个耗能的大户
- 是否全屏没有影响
- 上传下载影响有限
- 其他些小程序影响可以忽略不计
- 从另外一个角度说明内存消耗不贡献耗能
形式化的公式 : H(x)=98%*c(x)+2%*t(x)+0*f(x)+0*o(x); - 后记
看来我得支持乔帮主了。
申明:所有涉及的程序截图都是original,保证真实有效,兼历史意义,没有宣传,枪手的意图,勿反向工程我!
不过这里有几个疑问,希望高手解答 。
- display:none就是停止flash的占用了?
- 在我理解里不显示只是显卡不工作,为什么对cpu影响如此大?
- 在页面里script删除的意义——会刷新页面reflow,repaint吗? 被 删除的 script里 正在执行的程序会停止吗(这些代码应该在内存里了吧)?
- 使用js来切换不同flash和flash自身替换自己的不同,也就是flash能自己操作自己本身不——就像汇编可以修改正在运行的自己那样(程序的自举)?
- 附录
附件