android x86 优化,x86平台如何优化安卓的多媒体类应用

众所周知,由于安卓对网络流媒体格式的解析支持的不够好,所以当前市面上的在线视频提供商如优酷,乐视,暴风影音等鲜有直接使用安卓的多媒体播放器,他们多是基于开源的FFmpeg加上自己的解码库,开发自己的播放器。这样做的好处是可以方便的解析M3U8和FLV等流媒体格式,又可以支持RM和RMVB等比较流行的视频格式,还不用跟着谷歌去不断的更新安卓多媒体播放器。但是也带来了一个问题,用自己开发的多媒体播放器在多数情况下就只能使用软件来解码视频文件,而无法使用GPU的硬件加速能力,这会带来过高的CPU占用率,进而使得播放视频时的手机功耗过大,很大的影响了用户体验。

这个问题在x86平台上尤其明显,由于这些多媒体类应用没有针对x86平台做过优化,所以其本地代码仍然是基于ARM编译器编译的,直接运行在x86平台上,还要做一次二进制转换,这对于软件解码造成的过高CPU占用率无异于雪上加霜,会导致更高的CPU占用率和更高的手机功耗。

我们曾经直接将乐视和暴风影音的安卓客户端(ARM版本)直接运行在Intel最新的CLVT+ 平台的参考样机上,效果很差,CPU占用率竟然高达60%,还有卡顿的现象,但是经过Intel Atom平台SSSE3和Yasm指令集的优化,并且用ICC(Intel C/C++ Compiler)工具链编译以后,性能提升非常明显,CPU占用率竟然下降到13%以下,这已经明显优于同级别ARM平台运行此应用时的性能。

以下是对比乐视安卓客户端的ARM版本和x86优化后的版本运行在Intel参考样机上的CPU占用率对比图,性能有了4.5倍的提升。

42b33bc2cc1cd848bd442aa7176f65a6.png

乐视客户端优化对比

暴风影音经过Atom 平台SSSE3和Yasm指令集的优化,性能提升更明显,在K900上测试,优化前的ARM版本和优化后的x86版本CPU占用率从40%下降到3%,性能有了13倍的提升。

ed525484901ed28649d185154af98453.png

乐视客户端优化对比

取得这么大的性能提升,连这些ISV都惊叹不已,究竟是如何做到的呢?

首先,Intel的ATOM平台支持SSSE3指令集,这些指令集对于优化YUV转RGB数据最高可能有16倍的性能提升,而对于多数在线视频提供商使用的FFmpeg开源库,有大量的YUV转RGB需要处理,因此性能会有提升。

其次FFmpeg项目中有大量基于x86优化过的汇编代码,而这些代码在基于ARM平台做交叉编译时一般会被忽略掉。使用YASM编译工具可以最大限度的复用这些基于x86优化过的汇编代码,只有话费很少的精力,就可以获得很高的性能提升。

使用YASM以后,对FFmpeg和X264进行性能测试结果如下:

9f431cbb2a82f6a6fe253070ca0413da.png

YASM对FFmpeg和X264优化性能对比

基于ICC对本地库进行重编译,也会使得性能提升。ICC完全兼容GCC,并对Intel ATOM进行了寄存器编译优化,通过ICC编译后的本地代码,最高可以有30%的性能提升。

除了以上各种手段以为,Intel还给合作伙伴提供了GPA(Intel Graphics Performance Analyzer) 和 Intel Vtune Amplifier 两个工具用于开发过程中的调试。GPA可以实时跟踪应用运行时CPU和GPU的占用率,用于监测应用运行时是否有死锁点。Vtune可以收集应用运行一段时间内的所有操作,跟踪到每一条指令的运行。正是由于有这些丰富的调试手段,我们的合作伙伴才可以在短时间内大幅度提高IA平台上多媒体播放的性能。

引用一位乐视的多媒体工程师的话:“看着自己的多媒体应用在x86平台上可以高效流畅的运行,是一件非常有成就感的事!” 我们也希望越来越多的多媒体应用通过优化以后,可以在x86平台上更高效流畅的运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
应用详细介绍 · · ·Swapper 是设置高速缓存区的工具。 “扩展内存”用于非应用程序(例如 播放器+浏览器+地图等),需要root权限及SD卡。注意:使用Swapper 会缩短SD卡寿命。新版本增加 支持开启Swap分区。功能相当于电脑的虚拟内存。 使用方法: 有两种设置高速缓存分区的方式: 第一种是创建一个Swap文件到SD卡的Fat32分区,大小可以自定义设置。 每次开机或设置过 swap都会关闭,重新点下swap on就可以了 另一种是你的SD卡已经有Swap分区,但是未开启,那么可以使用它来开启 1.首先你必须已经有Swap分区,新手可以使用内置分区功能的Recovery分区 2.运行Swapper,点击【设置】找到【高级选项】, 3.勾选『使用SWAP分区』,点击下面的『SWAP分区』查看是否与你的SD卡分区相对应,在第三分区。。确定后,返回主界面。 4.点击【Swap ON】,最后点击【获取信息】看看是否开启成功。成功后第四行 Swap: 93864KB 酷安网点评 · · ·就像在电脑上增加虚拟内存一样,将硬盘的空间虚拟成内存来使用,机器爽了,硬盘就累了,不过相对于蹂躏几千块钱的的机器,大家应该都更倾向于蹂躏几十块钱的SD卡吧,对于内存不够用的机器很有用。 更新记录 · · ·2010-07-05收录版本:0.2.8r2 评分记录(最近5条) · · ·pandales6天前 评了 “4星” sy01681个星期前 评了 “3星” zhanglitao4222个星期前 评了 “5星” wadewoshi2012-04-03 评了 “5星” 非编不可2011-10-05 评了 “5星” 免费下载 约26000次下载... 该应用已通过360安全认证 下载手机二维码扫描软件:条码扫描器 上一张 2/2 下一张 详细信息 · · · 应用名称:Swapper 2高速缓存工具 最新版本:0.2.8r2 授权价格:免费 界面语言:简体中文 支持ROM:1.6 / 2.0 / 2.1 / 2.2 / 2.3 / 4.0 大小:0.08 MB 权限:查看权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值