解析Android ART(附:实测数据)
本文的重点就是以新版 Nexus7 来作为样机来介绍和测试一下这个神秘的 ART。ART 是一个什么东西?
盼星星盼月亮,11 月 1 日,谷歌终于发布了代号为 KitKat 的 Android4.4 和 Nexus5。 个人认为 Android4.4 最大的更新就是针对 RAM 占用进行了优化并且推出 ART 来代替 Dalvik,其甚至可以在一些仅有 512MB RAM 的老款手机上流畅运行。它也进一步优化了系统在低配硬件上的运行效果,似乎是为了更好地在众多智能穿戴设备上运行。11 月 13 日,谷歌放出了 nexus7 和 nexus10 的 Android4.4。
本文的重点就是以新版 Nexus7 来作为样机来介绍和测试一下这个神秘的 ART。ART 是一个什么东西?在过去,安卓的应用程序由 Dalvik Java 虚拟机运行,Dalvik 依靠一个 Just-In-Time(JIT) 编译器去向硬件“解释” App 字节码,代码和硬件打交道时平白无故多出一个解释过程,显而易见,这种方式并不能直接调用底层的硬件,而是通过了一个中间介绍人来让 App 运行,这就是为什么搭载 Android 系统的手机相比 iPhone 来说耗电快,软件占内存大,卡顿严重。从而 Dalvik 被看作安卓运行效率低下的“毒瘤”。当然,Dalvik 虚拟机让应用能更容易在不同硬件和架构上运行,是安卓系统普及的功臣。
Android 操作系统已逐渐成熟,谷歌开始将注意力转向一些底层组件,谷歌已经花了很长时间开发更快执行效率更高、更省电的 ART 运行时。自 Android 4.4 开始,谷歌将逐渐用 ART 运行时替代 Dalvik。而新的 ART 则完全改变了 Dalvik 这套做法,其处理应用程序执行的方式完全不同于 Dalvik,在应用安装时,ART 就直接把代码预编译成机器语言,这一机制叫 Ahead-Of-Time (AOT)编译。和 Dalvik 相比,经过 ART 编译后的应用从根本上省略了解释字节码这个过程,运行起来更有效率、耗电更少、占的内存也更低。当然,预编译也带来了两个问题,一个是应用占用的存储空间 将会更大,另一个是这个过程也会让应用安装耗时更长。预编译的 App 体积会大一些,安装时间则要看 App 本身的复杂程度。不过,App 的安装过程只有一次,相信大部分人是能忍受这个时间的。以下是用 2013 版 Nexus7(16G)进行的测试,不排除不同版本之间存在误差。在本文发布时不排除应用已经更新从而对新系统进行了适配。以下所有的测试都是进行多次实 验算得的平均值。
应用占空间大小对比表:
应 用名称及版本号 ART 占用空间大小 Dalvik 占空间大小 微信 5.0.3.1 52.62M 35.96M 快播 3.1.78 72.62M 61.04M 京东 2.7.0 15.25M 8.98M 神庙逃亡 2 1.4.2 29.94M 24.15M 淘宝 3.9.3 46.22M 32.21M 鲜果 3.5.5 13.12M 9.10M QQ 4.5.2 63.04M 44.64M PS Touch 1.1.1 42.73M 41.52M
从上面的测试可以看出,应用安装上后分别使用 ART 和 Dalvik 方式所占的空间大小还是有很大区别的。京东和微信两个应用甚至都快达到两倍的关系了。PS Touch 却相差很少。在 16G 是智能手机的标配,存储器越来越大,越来越便宜的今天,如果 ART 能大幅提高 Android 用户体验及功耗的话,这点存储损耗还是可以接受的。那第一次搭载的 ART Andoid4.4 到底争不争气,是不是能带来很大提升,接着往下看。
启动时间对比表:
应 用名称 ART 启动时间 Dalvik 启动时间 快播 3.1.78 3.2s 3.1s 京东 2.7.0 3.6s 3.8s 神庙逃亡 2 1.4.2 6.9s 7.0s 淘宝 3.9.3 3.5s 3.6s 鲜果 3.5.5 4.2s 4.2s QQ 4.5.2 2.9s 2.3s PS Touch 1.1.1 6.3s 8.1s 从上面的测试可以看出除了 PS Touch 和 QQ 相差较大外,其他应用的启动时间相差不大。QQ 可能兼容性稍差些,使用 ART 反而比 Dalvik 启动时间长。PS Touch ART 的启动时间还是有比较明显的提升。从这一局 PK 来看,不分胜负。
软件兼容性对比表: