# ART：Android 摆脱卡顿的希望？

- 作者：积木
- 发布时间：2013-11-08 07:30
- 分类：公司
- 原文：https://www.ifanr.com/370230

[![tech-google-nestle-kitkat](https://s3.ifanr.com/wp-content/uploads/2013/11/tech-google-nestle-kitkat.jpg)](http://www.ifanr.com/?attachment_id=370250)

与 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 网站](http://www.androidpolice.com/2013/11/06/meet-art-part-1-the-new-super-fast-android-runtime-google-has-been-working-on-in-secret-for-over-2-years-debuts-in-kitkat/)对此进行了分析。

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](http://www.extremetech.com/mobile/165676-why-everyone-was-wrong-about-key-lime-pie-and-what-kitkat-means-for-android)
