ART简单体验和Android图形硬件加速分析

原文链接:http://www.soomal.com/doc/10100004760.htm


平均/总评分:08.02/505
ART简单体验和Android图形硬件加速分析_第1张图片
相关资料 收藏此图 相关图片
Android ART

Android ART简介和理论性能测试

从Android诞生起,以Java为基础的Dalvik虚拟机就一直是“原罪”,目前Dalvik采用JIT[Just In Time]的即时工作模式,每次应用运行时需要预编译成二进制机器代码,似乎安卓系统的卡顿和效率低下都是这个虚拟机的错。从Android 4.4版本开始,Google加入了新的运行环境ART。ART采用预编译模式[Ahead of Time],在应用安装时就将二进制代码编译完成。在Google的官方介绍中,ART“终有一天”会替代Dalvik成为标准的运行环境。

ART简单体验和Android图形硬件加速分析_第2张图片
Google Nexus 7 - Android 4.4系统 - 系统设置
 
ART简单体验和Android图形硬件加速分析_第3张图片
Google Nexus 7 - Android 4.4系统 - 选择运行环境

ART是不是真的如网上所传那么神奇,能成为Android的十全大补药丸?我们手上正好有不少能运行Android4.4的设备,并在Nexus 7上进行了体验。开启ART的方法很简单,在开发者选项中切换即可。切换后需要重启系统,并在启动后将所有已安装的应用全部重新进行预编译,应用占用的存储空间会相对增加。切换为ART后系统性能是否有提升?我们使用3DMark、GeekBench3和Antutu4对理论性能进行对比测试。

ART简单体验和Android图形硬件加速分析_第4张图片
相关资料 收藏此图 相关图片
Google Nexus 7 - Android 4.4系统 - Dalvik虚拟机环境下理论性能测试成绩
ART简单体验和Android图形硬件加速分析_第5张图片
相关资料 收藏此图 相关图片
Google Nexus 7 - Android 4.4系统 - ART运行环境下理论性能测试成绩
ART简单体验和Android图形硬件加速分析_第6张图片
Google Nexus 7 - Android 4.4系统 - ART运行环境下Chrome黑屏、
 
ART简单体验和Android图形硬件加速分析_第7张图片
Google Nexus 7 - Android 4.4系统 - 无法启动的应用

很显然,所有理论性能,包括IO和内存在内,ART和Dalvik并没有明显差异,基本可视为测试误差。那ART究竟带来了什么好处?“亲儿子”Nexus系列手机和平板电脑系统优化本身就做得相对出色,例如配置了1.2GHz双核OMAP4430处理器的Galaxy Nexus系统依然比今天许多高配置手机要流畅。至于所谓的低硬件配置优化,就更难找到可靠的实践依据和数据支持。切换ART后,确实存在少部分应用无法正常启动的情况,网页浏览和部分应用响应速度略有提升,但会出现画面碎裂的现象,基本上不影响正常使用。

寻找Android系统效率低下的原因

ART简单体验和Android图形硬件加速分析_第8张图片
相关资料 收藏此图 相关图片
Android 系统架构[资料来自互联网]

要了解Android的不流畅问题,不能光看表面,首先还是要找到问题的根本原因。Android的系统核心Linux本身就是一个标准的多用户多进程系统。Google并没有系统底层进行根本性改变,后台运行的进程和服务并不受限制,这也是Android手机应用在后台进程推送频繁和垃圾软件众多的原因。但是,多任务对于操作系统并不是什么缺点更不是落后反动,只要管理得当就是一个巨大优势,至少Android手机平板可以一边迅雷BT下载一边聊QQ,iOS和WP现在就没辙。而且以目前的硬件发展速度,无论是移动处理器还是配套的内存和存储芯片都将是性能越来越好,功耗发热越来越低,这算不上瓶颈。

ART简单体验和Android图形硬件加速分析_第9张图片
相关资料 收藏此图 相关图片
操作系统应用显示流程

Android相比Linux,在图形层面上有了巨大差异,GNU Linux以开源的Xorg一类的图形管理器和Gnome/KDE等桌面管理器组成,Android要相对简单一些,有图形管理[SurfaceManager],通过HAL与硬件驱动交流。但Android目前最大的问题,就恰好出现在图形管理层上。众所周知,Windows系统的图片、网页等2D图形绘制长期以来由GDI负责,从Windows 8开始转为Driect 2D加速显示[注:还有相当一部分使用DirectCompute让GPU完成通用计算,vista 起就有GPU加速,但当时并不完美,到8算是大功告成],相当于苹果iOS的Quartz 2D,而Android采用了谷歌收购的Skia。Driect 2D和Quartz 2D均对GPU硬件加速有着良好支持,但Skia原始版本的图形光栅处理却是完全基于CPU和软件运算,这意味着相对WP和iOS系统,Android的2D图形对GPU单元的利用率会严重不足。

ART简单体验和Android图形硬件加速分析_第10张图片
相关资料 收藏此图 相关图片
Android系统支持的2D硬件加速特性 - 来自Android官方网站
ART简单体验和Android图形硬件加速分析_第11张图片
相关资料 收藏此图 相关图片
Android系统支持的2D硬件加速特性 - 来自Android官方网站

上图是Google官方网站对Android 2D硬件加速支持的列表,即使不需要看懂英文和代码也能看到满屏幕的红叉了。虽然API等级越高,GPU硬件加速相对越完善,但API Level 18需要Android4.3以上版本支持,相信没有几个主流应用敢推出一个仅支持Android 4.3的版本。Android系统界面和原生应用完全可以不考虑向下兼容性采用高版本API因此流畅,而第三方APP却还在卡顿。

很多人会表示很奇怪:2D也需要硬件加速,GPU加速不是大型3D游戏的专利?大家可以感受一下卸载显卡驱动后完全靠处理器运算浏览网页和看视频的效果……当然这绝对不是说Android完全没有硬件图形加速,因为还可采用OpenGL的3D渲染手段,也可在处理器CPU单元中加入图形运算和视频的优化,一个纯CPU和软件运算的图形系统,光界面和视频就能把人逼疯,Android显然还没差到那个程度。

ART简单体验和Android图形硬件加速分析_第12张图片
相关资料 收藏此图 相关图片
Meizu 魅族 MX3智能手机 - Flyme OS 3体验 - 浏览器、Google Play、淘宝

但普通应用开发者并不会去过多考虑其中的问题,常规的应用,特别是基于Webkit的各类网络应用QQ、微博等,完全依靠Skia处理。过去对Skia的测试也表明强制启用Skia的GPU加速会反而带来性能的严重下降。《Skia GPU加速能使Android系统的Webkit渲染获得多少收益? 》[作者: Huang_Dongsung农步祥 ] 很显然,Skia才是现在Android手机平板“卡顿”的罪魁祸首。

总结

所谓ART比Dalvik更快、更流畅、更省电在实际应用中没有体现,Google的介绍中完全没有谈及ART存在这类优势,无论是AOT或JIT模式从技术角度上看就各有优劣,这部分内容涉及专业的软件开发就不再详细说明。ART取代Dalvik最主要的原因是什么?其实这和技术性能无太大关系,Dalvik的Java虚拟机和JIT预编译和运行模式侵犯了以Oracle为主导的Java技术专利集合[JIT模式、甚至是Java的预编译代码模式就包含在Java技术专利池],Google发展ART主要目的以回避和减少专利数量为主。目前ART对于应用体验改善十分有限,任务单线程和多线程性能暂时还无法兼顾,某些应用变快或某些程序抽风的情况都会发生,用户机型个体差异很大。而且ART并未解决Android的图形性能存在的固有缺陷,也没有解决正统多任务系统带来的耗电和系统占用,所谓更快更高更强完全只是某些媒体和个人的脑补。真正要解决Android的性能问题,就是老老实实等Google完善硬件加速能力,或尽量使用高版本API开发应用。

这并不是对着全世界唱反调或者果粉软粉的作文,只是一篇流言终结者+简单科普,我们也要看到硬件效率不是一切,Android依然是现在最受市场欢迎的操作系统,从首次支持GDI+的Windows XP到全硬件加速的Windows 8[Direct 2D],微软走了近10年,Google的进步速度还是快得多了。


你可能感兴趣的:(Android)