HTIML5 真的打败了Flash?新测试结果出人意料
【编者按】本文最早发布于 2010 年,通过 Flash 与 HTML5 在 Mac 及 Windows 平台不同浏览器中的测试表现,比较两者的性能并分析背后的原因。虽然是一篇老文,但其客观冷静的分析态度,仍旧值得我们学习。文章系国内 ITOM 管理平台 OneAPM 编译呈现。
总部位于库比蒂诺的苹果公司在即将推出iPad之际,对Adobe Flash技术保持的回避态度已经成为技术界的讨论热点。 在iPhone和iPod Touch这样的小型移动设备上放弃使用Flash尚且说得过去,可是,人们质疑,下个月即将发布的新平板设备对Flash的不支持是否会成为决定成败的关键。虽然按照苹果公司CEO乔布斯的说法,该设备“比上网本要好”。
另一方面,苹果公司的支持者们对苹果的考虑表示赞同——“Flash是CPU杀手”,将Flash技术用于苹果的移动设备势必会缩短电池寿命。
然而,最近有人对比测试了Flash和HTML5(这种新的web标记语言已经削弱了Adobe插件的需求),结果表明这不是一个简单的非黑即白的问题。Flash真的是CPU杀手吗?是的,在有些情况下确实如此,但是,出人意料的是,并非所有情况。实际上,HTML5的表现有时更差。
测试 Flash 和 HTML5
厄泽尔是视频编码技术方面的专家,自1990年起一直从事数字视频工作,同时著有13本与该领域相关的书籍。【作者注:曾有人指出厄泽尔以 Adobe 产品为主题做过讲座,写过书籍,因此他借助Adobe Flash的成功谋利。笔者认为这对测试结果没有任何影响,但还是有必要对此做出说明。】最近,厄泽尔通过一系列的测试对比了HTML5和Flash这两种技术在Mac和PC以及不同web浏览器中的表现,后者包括IE8、Google Chrome、 Apple Safari和Mozilla Firefox。
完整的测试结果公布在StreamingLearningCenter.com上。一言以概之就是:Flash并不总是CPU杀手,有时候这项“殊荣”当属于HTML5。
以下是厄泽尔的一些主要发现,测试结果分成Mac和Windows两个部分。
Mac测试
- 在Safari浏览器中,HTML5的效率最高,CPU使用率比Flash低,仅为12.39%。使用Flash 10.0时,CPU使用率达到了37.41% ;若使用Flash 10.1,CPU使用率则又降至32.07%
- 在Google Chrome浏览器中,Flash和HTML5的效率都不高(两者都是50%左右)。
- 在Firefox浏览器中,Flash的表现比在Safari中稍差一些,但比在Chrome中要好。
Windows测试
- Safari浏览器无法播放HTML5视频,所以没有办法测试。 但是Flash 10.0的CPU使用率是23.22%,而Flash 10.1的CPU使用率只有7.43%。
- Google Chrome在Windows上比在Mac上更高效。Flash Player 10.0的播放效率比HTML5高出24%,而Flash Player 10.1的播放效率比HTML5高出58% 。
- 在Firefox浏览器中,Flash 10.1的CPU使用率从Flash 10.0的22%下降到6%。
- 在IE8浏览器中,Flash 10.0的CPU使用率是22.41%,而Flash 10.1 的CPU使用率是14.62%。
Flash性能的关键在于硬件加速
厄泽尔在分析测试结果时发现,Flash性能好坏的关键在于是否可以启用硬件加速。该功能在 Flash10.1中首次推出,允许Flash插件在某些计算机上使用图形处理单元(GPU)对视频进行解码。依靠显卡和驱动(NVIDIA, AMD/ATI 和 Intel提供的支持产品),Flash10.1的视频解码不仅可以像Flash10.0一样支持全屏播放,而且还支持所有视频播放。
Adobe表示,在Linux和Mac OS X系统下暂不支持硬件加速,后者是因为 Mac OS X不允许访问所需的API。Adobe还表示,“Flash Player团队将会继续评估是否在将来的版本中为Linux和Mac OS X系统添加硬件加速支持。”
简单地说就是:通过拒绝Flash访问有助于减少CPU负荷的硬件,苹果公司不允许其提高在Mac OS X/Safari平台上(还有 iPod/iPhone/iPad)的运行效率。Adobe正在静待观望,看苹果的态度是否会有所改变,但是正如厄泽尔所说,“主动权在苹果手中。”
那么,苹果会改变主意吗?目前似乎不大可能。在谈及不支持Flash的原因时,苹果只需声称Flash技术的效率低下就可以了。而且现下,考虑到Flash的配置方式,这也确实实属。但是只要苹果公司愿意放行,相信他们也是可以做到的。这就是为什么有些业内人士认为,苹果封杀Flash的决定更多是出于商业考量,而不是技术原因。毕竟,如果你访问Hulu.com就能播放电视节目和电影,又何必去iTunes商店购买呢?
因此,苹果决定在其移动设备上不支持Flash技术,“CPU杀手”一说可能是个影响因素,但很可能不是唯一的原因。
OneAPM Browser Insight 是一个基于真实用户的 Web 前端性能监控平台,能帮助大家定位网站性能瓶颈,实现网站加速效果可视化;支持浏览器、微信、App 浏览 HTML 和 HTML5 页面。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
原文地址:http://readwrite.com/2010/03/10/does_html5_really_beat_flash_surprising_results_of_new_tests
HTIML5 真的打败了Flash?新测试结果出人意料的更多相关文章
- 使用FIO对SATA、SSD和PCIe Flash进行测试
首先声明,同事做的实验 使用fio对SATA.SSD.PCIE进行了测试 测试说明: 1.测试命名 sync_write_4k_32 sync表示测试方式,可以是sync或者libaio ...
- flash压力测试
涉及目录: vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6735/src/drivers/inc/dram ...
- 09.25日记(2014年9月25日23:22:06)用java这么多年面向对象我真的懂了吗,测试先行理念会玩吗
二胡 (1)应该找些书来看看,工作N年并不代表就有N年的工作经验. (2)DiaTransit02,DiaDept02,DiaAirport02,DiaHighway02.都具有x,y属性为何不设计一 ...
- 快速准备(复制替换)一套新测试环境,CentOS7 MySQL相关配置
拿到一个新环境,需要找相关配置,我有一个办法,相对能比较快速地复制一套环境出来. 修改机器配置: virsh 相关几条命令,已完成,后续我再整理补充... 虚拟化相关,参考:https://www.c ...
- 如何在Flash中新窗口打开页面而不被拦截
Flash的wmode必须是opaque或者transparent,允许Flash访问页面脚本.另外跳转必须是点击直接触发. 代码:ExternalInterface.call("windo ...
- 现在还需要测试或者QA人员吗?
Facebook没有专门的测试人员,都是开发自己测:微软裁掉了测试部门,改由开发测:google有少量的测试人员,主要做测试自动化框架开发或者性能.安全等专项测试,测试用例还是开发人员自己设计自己跑( ...
- Nand flash 的发展和eMMC
讨论到eMMC的发展历程,必须要从介绍Flash的历史开始 Flash分为两种规格:NOR Flash和NAND Flash,两者均为非易失性闪存模块. 1988年,Intel首次发出NOR flas ...
- [面试]中高级测试工程师必备,月薪15K+
1.你的测试职业发展是什么? 测试经验越多,测试能力越高.所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去.而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求 ...
- 串行FLASH文件系统FatFs---转自野火论坛
为了支持长文件名,需要用到FATFS源码中的cc936.c的两个函数ff_convert,ff_wtoupper:这里面直接用了两个大数组(127KB)来做unicode转gbk(OEM)的对照表,这 ...
随机推荐
- docker with redis
docker run --name myredis -d -v /home/rudy/pro/database/redis:/data -p : --privileged=true redis
- Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装
组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...
- Disrunptor多生产者多消费者模型讲解
多生产者多消费者模拟需求:1.创建100个订单生产者,每个生产者生产100条订单,总共会生产10000条订单,由3个消费者进行订单消费处理.2.100个订单生产者全部创建完毕,再一起生产消费订单数据 ...
- 作用域中LHS查询和RHS查询
LHS查询:赋值操作左侧的查询,LHS查询试图找到变量的容器本身,,从而对其赋值. RHS查询:赋值操作右侧的查询,可以理解为"取到某某的值" 举例: function foo(a ...
- SpringDataJPA快速入门
访问我的博客 前言 之前在学习 SpringBoot 框架的时候,使用到了 SpringData JPA,但是当时只是简单的查询,没有用到稍微复杂的查询. JPA 的 JPQL 语法规则对于简单的查询 ...
- 字符串匹配的KMP算法-16张图片看明白
作者: 阮一峰 日期: 2013年5月 1日 字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另 ...
- AJAX unsupported media type 415错误处理
一.问题 在使用angular做请求拦截时,因为依赖循环的问题,在请求拦截中改为使用ajax来发起请求拿到我想要的数据,结果出现了415 Unsupported Media Type错误,由于很久没使 ...
- Storm1.0.6环境搭建
1.配置 三台服务器搭建Storm集群:CentOS7One,CentOS7Two,CentOS7Three 在CentOS7One机器上配置 1.1 zookeeper配置 目录:/opt/zook ...
- 122. 买卖股票的最佳时机 II
题意描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易( ...
- 测试本地node包
@subject: 测试本地node包 @author: leinov @date: 2018-10-25 当我们编写一个node包,在发布到npm上之前,需要在本地测试该包.假设我们有一个已经编写好 ...