ART:Android 摆脱卡顿的希望?
与 iOS 相比,Android 的用户体验有个相对糟糕的开始。在很长的时间里,界面一直丑小鸭,卡顿也是挥不去的痛。不过,在 Google 的全力推动,以及硬件厂商的响应下,Android 还是跨越各种阻碍,逐渐壮大起来了。
在此过程中,Google 也在经历着重大的变化。它逐渐从一个只重视数据的公司,转变为一个重视设计和用户体验的公司。从 Android 4.0 开始,Android 拥有了自己的设计语言和应用设计指导。与此同时,Google 也在着手解决卡顿问题。Android 4.1 的 “黄油计划”,Android 4.3 的 TRIM 支持,都显著提高了系统运行的顺畅度,而 Android 4.4 的 “Project Svelte” 提升了内存管理,使得系统能够顺利运行在硬件配置低端的设备上。
不过,要解决应用卡顿,还是要针对核心问题下手,就是应用运行环境。Dalvik VM 效率并不是最高的。从 Android 4.4 开始,Google 开发者引进了新的 Android 运行环境 ART(意思就是 Android Runtime。Android 官方页面的介绍中,也将其称作新的虚拟机),以替代旧的 Dalvik VM。它现在是实验选项,系统默认的运行环境仍然是 Dalvik。ART 会为 Android 带来怎样的改变?AndroidPolice 网站对此进行了分析。
ART 的机制与 Dalvik 不同。在 Dalvik 下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在 ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动和执行都会变得更加快速。
根据一些基准测试,新的运行环境能够使大多数应用的执行时间减半。这意味着,CPU 消耗大、运行时间长的应用能够更加快速地完成,而一般的应用也能更加流畅,比如动画效果更顺畅,触控反馈更加即时。在多核处理器的设备上,多数情况下只需激活少量的核心,或者能够更好的利用 ARM 的 big.LITTLE 架构。另外,它将会显著提升电池的续航能力以及系统的性能。
预编译也会带来一些缺点。一方面,机器码占用的存储空间更大。字节码变为机器码之后,可能会增加 10%-20%,不过在应用包中,可执行的代码常常只是一部分。比如最新的 Google+ APK 是 28.3 MB,但是代码只有 6.9 MB。另一方面,应用的安装时间会变长。至于延长多少时间,取决于应用本身,一些复杂的应用如 Facebook 和 Google+ 会让你等待更长时间。
总的来说,ART 的优点还是远远超越其缺点的。毕竟,影响用户体验的要素中,电池续航和应用顺畅运行更为重要。我们仍然不知道 ART 何时能够替代 Dalvik,不过 AndroidPolice 网站说,Google 已经秘密开发了两年之久。Android 摆脱卡顿的希望,看来就是它了。
图片来自 extremetech