安卓4.4 ART模式解读、性能对比
  • 上方文Q
  • 2013年12月06日 14:35
  • 0

安卓4.4 KitKat里最引人关注的变化之一就是新的安卓运行时ART,但因为还是试验性质的,Google并未做大张旗鼓的宣传,相关介绍也很少,只说它有望取代使用许久的Dalvik虚拟机。

AnandTech近日详细考察了Nexus 5,其中就对ART模式做了一些介绍和测试。

在安卓设备上,Dalvik虚拟机是运行Java语言编写应用的必需步骤,正是它将应用编译为字节码(ByteCode),然后再转换成dex(Dalvik可执行格式),最终交给Dalvik虚拟机来运行。

通过这一过程,安卓应用可以很好地适应各种形形色色的设备,但也因为中间的转换过程降低了执行效率。

Android 2.2的时候引入了即时编译器(JIT),大大提高了部分应用的执行效率。此后虽然不再有明显的性能提升,但是Google和厂商们一直都在优化Dalvik。事实上,如果你执行了Dalvik缓存清理,就会看到“安卓正在更新”(Android is upgrading)的提示,此时幕后就正在对dex文件进行深入优化,同时重建Dalvik缓存分区。

ART抛弃了JIT而转向AOT(预先编译)模式,会在启动过程中同样的“安卓正在更新”时开始生效,只不过需要更长时间。

如果查看这个时候的系统日志,就会发现新的ART文件格式“dex2oat”正在运行、编译成文件、建立Dalvik缓存。

I/art ( 615): DexFile_isDexOptNeeded cache file /data/dalvik-cache/data@app@com.google.android.apps.maps–2.apk@classes.dex does not exist for /data/app/com.google.android.apps.maps–2.apk

I/PackageManager( 615): Running dexopt on: com.google.android.apps.maps

I/dex2oat ( 951): dex2oat: /data/dalvik-cache/data@app@com.google.android.apps.maps–2.apk@classes.dex

W/dex2oat ( 951): Compilation of com.google.zxing.g.a.s[] com.google.zxing.g.a.s.f() took 126.362083ms

ART目前兼容ARMv7、x86、MIPS三种处理器架构,还不支持64位的ARMv8,而且从字节码到原生代码的转换暂时仅支持AOT编译,JIT模式得以后再说。这更加证明了ART现在的试验性质。

底层虚拟机的变化对安卓应用的性能、耗电量影响都是巨大的,ART又有什么变化呢?

安卓4.4 ART模式解读、性能对比

这里找来两部Nexus 5、两部Moto X,分别各自运行Dalvik、ART。运行时模式可以在设置-开发者选项里切换,而除了少部分应用之外,大多数都可以正常运行于ART。

安卓4.4 ART模式解读、性能对比

Nexus 5 AndEBench测试中,单线程下ART的速度有所提升,但是双线程、四线程不如Dalvik,显然在线程分派方面还不够好。

Caffeinemark是一款经典的Java测试程序,ART性能暴增了超过50%。Linpack也提升了几乎30%。

某厂商看到了Caffeinemark的对比后也赞叹不已,并表示Dalvik的潜力确实已经基本挖掘殆尽,ART是个很好地的方向。

安卓4.4 ART模式解读、性能对比

Moto X上使用了高通定制的Dalvik,AndEBench单线程、双线程表现基本不相上下,四线程模式无法运行,Caffeinemark则提升了不到20%。

事实证明,ART的确可以带来明显的性能提升,进一步优化后肯定还会更好,但是也有一些代价,必需需要占用更多存储空间,应用安装和系统启动时间会延长不少(AOT编译),不过我们相信这是值得的。

文章纠错

  • 好文点赞
  • 水文反对

此文章为快科技原创文章,快科技网站保留文章图片及文字内容版权,如需转载此文章请注明出处:快科技

观点发布 网站评论、账号管理说明
热门评论
查看全部评论
相关报道

最热文章排行查看排行详情

邮件订阅

评论0 | 点赞0| 分享0 | 收藏0