【编者按】本文最早发布于 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?新测试结果出人意料的更多相关文章

  1. 使用FIO对SATA、SSD和PCIe Flash进行测试

    首先声明,同事做的实验 使用fio对SATA.SSD.PCIE进行了测试 测试说明: 1.测试命名   sync_write_4k_32      sync表示测试方式,可以是sync或者libaio ...

  2. flash压力测试

    涉及目录: vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6735/src/drivers/inc/dram ...

  3. 09.25日记(2014年9月25日23:22:06)用java这么多年面向对象我真的懂了吗,测试先行理念会玩吗

    二胡 (1)应该找些书来看看,工作N年并不代表就有N年的工作经验. (2)DiaTransit02,DiaDept02,DiaAirport02,DiaHighway02.都具有x,y属性为何不设计一 ...

  4. 快速准备(复制替换)一套新测试环境,CentOS7 MySQL相关配置

    拿到一个新环境,需要找相关配置,我有一个办法,相对能比较快速地复制一套环境出来. 修改机器配置: virsh 相关几条命令,已完成,后续我再整理补充... 虚拟化相关,参考:https://www.c ...

  5. 如何在Flash中新窗口打开页面而不被拦截

    Flash的wmode必须是opaque或者transparent,允许Flash访问页面脚本.另外跳转必须是点击直接触发. 代码:ExternalInterface.call("windo ...

  6. 现在还需要测试或者QA人员吗?

    Facebook没有专门的测试人员,都是开发自己测:微软裁掉了测试部门,改由开发测:google有少量的测试人员,主要做测试自动化框架开发或者性能.安全等专项测试,测试用例还是开发人员自己设计自己跑( ...

  7. Nand flash 的发展和eMMC

    讨论到eMMC的发展历程,必须要从介绍Flash的历史开始 Flash分为两种规格:NOR Flash和NAND Flash,两者均为非易失性闪存模块. 1988年,Intel首次发出NOR flas ...

  8. [面试]中高级测试工程师必备,月薪15K+

    1.你的测试职业发展是什么? 测试经验越多,测试能力越高.所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去.而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求 ...

  9. 串行FLASH文件系统FatFs---转自野火论坛

    为了支持长文件名,需要用到FATFS源码中的cc936.c的两个函数ff_convert,ff_wtoupper:这里面直接用了两个大数组(127KB)来做unicode转gbk(OEM)的对照表,这 ...

随机推荐

  1. ubuntu安转QTcreator出现The default mkspec symlink is broken

    QT Creator安装:https://blog.csdn.net/arackethis/article/details/42326967 QT SDK安装:https://blog.csdn.ne ...

  2. GitLab 修改主机名,更换 IP 配置,配置 SMTP

    # find / -name gitlab.yml /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml /var/opt/gitla ...

  3. [个人项目] 使用 Vuejs 完成的音乐播放器

    Foreword 虽然音乐播放这类的项目的静态展示居多,业务逻辑并不复杂,但是对于我这种后端出身的前端萌新来说,能使用vuejs完成大部分功能, 也会有许多收获. api:我使用的是一个开源的 nod ...

  4. 全网最详细的再次或多次格式化导致namenode的ClusterID和datanode的ClusterID之间不一致的问题解决办法(图文详解)

    不多说,直接上干货! java.io.IOException: Incompatible clusterIDs in /opt/modules/hadoop-2.6.0/data/tmp/dfs/da ...

  5. 分享 : 警惕MySQL运维陷阱:基于MyCat的伪分布式架构

    分布式数据库已经进入了全面快速发展阶段.这种发展是与时俱进的,与人的需求分不开,因为现在信息时代的高速发展,导致数据量和交易量越来越大.这种现象首先导致的就是存储瓶颈,因为MySQL数据库实质上还是一 ...

  6. java断言assert初步使用:断言开启、断言使用

    1 说明 java断言assert是jdk1.4引入的. jvm断言默认是关闭的. 断言可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”. 断言只适用复杂的调式过程. ...

  7. list双向链表容器(常用的方法总结)

    特别注意,由于list对象的结点并不要求在一段连续的内存中,所以,对于迭代器,只能通过++或者--的操作将迭代器移动到后继或者前驱结点元素处.而不能对迭代器进行+n或者-n的操作,这点与vector等 ...

  8. 微信支付 统一下单 字段 body 为中文时 报【签名错误】解决方案(C# SDK)

    方案一 如果你是从微信支付官网下载的 .NET C#[微信支付]API对应的SDK 调用示例 查看源码,会发现这个SDK中的 WxPayData 的类的 CalcHMACSHA256Hash 签名方法 ...

  9. Python生成语音

    from aip import AipSpeech # 利用百度语音合成音频文件 """ 你的 APPID AK SK """ APP_ID ...

  10. NIO学习笔记六:channel 之前数据传输及scatter/gather

    在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel传输到另外一个channel. FileChannel的transferFrom()方法可以将 ...