ART简单体验和Android图形硬件加速分析
农步祥 于 2014.02.24 05:11:40 | 源自:www.soomal.com | 版权:原创 | 平均/总评分:08.00/536
  • Android ART简介和理论性能测试

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

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

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

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

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

  • 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单元的利用率会严重不足。

  • 上图是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显然还没差到那个程度。

  • 但普通应用开发者并不会去过多考虑其中的问题,常规的应用,特别是基于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的进步速度还是快得多了。

    请评分
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    03
    Android运行效率低下是一直就存在的,开发者一开始就没考虑过效率,就算后期不断改进也难以全面覆盖——版本众多是硬伤。iOS之所以如此流畅,归根结底就是开发者一开始就重视这个问题,而且它的硬件相对来说比较少,不需要进行太多的优化。现在的Android就不同了,大量的硬件就需要大量的驱动,为了各种兼容也就只好各种牺牲了。
    而且一直以来,我都认为JAVA都不是运行高效的界面语言,对比一下WP8吧,同样的软件,.net运行效率更高。可以预言,在短期内,Google是没办法解决效率问题的。
    事实上,也并不是所有用户都在意运行效率的,毕竟又不是所有人都有强迫症,也不是所有人都同时有iOS系统做对比。退一步讲,只要不对比,谁知道慢还是快。
    当务之急应该是同一版本,减少版本差异化。当Android版本变成统一更新后就更容易实现效率高效化了。
    发表于2014.03.12 14:32:23
    103
    058.241.044.***
    058.241.044.***
    发表于2014.03.07 18:57:35
    101
    202.127.023.***
    202.127.023.***
    发表于2014.03.07 09:35:46
    100
    203.093.211.***
    203.093.211.***
    发表于2014.03.06 19:09:32
    99
    111.206.051.***
    111.206.051.***
    发表于2014.03.06 02:26:08
    98
    111.206.***.***
    111.206.***.***
    97
    121.008.209.***
    121.008.209.***
    发表于2014.03.05 18:01:41
    96
    221.204.171.***
    221.204.171.***
    发表于2014.03.04 18:49:04
    95
    116.023.007.***
    116.023.007.***
    发表于2014.03.04 13:39:10
    94
    220.249.194.***
    220.249.194.***
    发表于2014.03.03 00:12:22
    93
    111.206.***.***
    111.206.***.***
    历尽千辛万苦刷了cm11的L710的用户表示,ART快多了!
    装了100+的软件,还能做到各方面都非常流畅,虽然可能不至于完全像苹果一样快,但确实打开任何界面都是一种流畅、舒心的感觉。点开就能响应。此文我觉得下结论太潦草了!
    发表于2014.03.02 20:13:11
    92
    220.186.***.***
    220.186.***.***
    91
    220.186.156.***
    220.186.156.***
    发表于2014.03.02 15:21:18
    90
    059.173.122.***
    059.173.122.***
    发表于2014.03.01 03:39:19
    89
    119.190.072.***
    119.190.072.***
    发表于2014.02.28 21:46:05
    88
    182.129.061.***
    182.129.061.***
    发表于2014.02.28 18:46:39
    87
    124.077.206.***
    124.077.206.***
    发表于2014.02.28 16:08:06
    86
    106.080.228.***
    106.080.228.***
    发表于2014.02.28 15:55:52
    84
    提示
    本贴不可匿名回复,回复等级为:1 ,您现在正处在潜水状态
    回复
    验证码
    9287 为防止广告机贴垃圾,不得已而为之
    表情
    正文