ART 作为一个令人期待的变革
甚至在 4.4 实验的时候大家都迫不及待要打开
ART 和 Dalvik 最大的差别是从 JIT(Just In Time)
改成 AOT(Ahead Of Time) 的作法
也就是说他在安装的时候,就先将程式编译成 native binary
目的当然是为了获得性能上的提升
实际的状况是怎样呢?
除了安装超慢,binary 显著变大,以一般使用状况来说
单纯提高到 ART 就会使得 EMMC 耗用量增加 500MB~1GB
执行时的 I/O 量也显著提升
随之而来的就是 RAM 和 Cache 使用上的不经济
理论上是可以减少 run time optimization 的 CPU 用量
但是就效能和耗电来说,其实有时候 I/O 性能比 CPU 重要多了
耗电这种东西看整体,影响的因素极多
升上 5.0 后觉得比较耗电不见得是因为 ART
不过如果没有另外调整,觉得换了 5.0 比较省电
说穿了大概是使用者自我感觉良好比较多
回到效能方向,其实 Google 在之前的实验就已经知道一件事
“ART 其实没有想像中的好”
前面说的 I/O、RAM/cache 使用量增加是一个因素
另外最大的主因是,ART 本身还不够成熟
目前的状况是,高阶换 L 没有明显的助益
然后中低阶来说换 L 反而跑得更差了
AOT 太喘,但 L 没有 JIT 的选项可选
除了 CPU intensive 的跑分以外,对实际使用的助益很有限
那为什么已经发现问题却不改善呢?
也许继续走双 VM,等 ART 再成熟一点再切过去?
应该是牵涉 politics 的问题,而且 Dalvik 的 resource 早就调走
想回头也来不及了