In a recent presentation, Ahok Bhat, a Senior Software Engineer at ARM, talked about a major upgrade to ART in a future version of Android, which could even be Android 6.0 considering that we won't see the final version until at least late fall.
With the arrival of Android 5.0 Lollipop, Google also introduced the Android Runtime, also called ART. The new Runtime "quickly" compiles "ahead-of-time" (AOT), while before Dalvik would compile "just-in-time."
The Dalvik JIT would make apps slower to load (compared to AOT compilation) because they would have to be compiled to machine code on-the-fly, as they are opened. Besides being slow, the JIT also gave reduced battery life as the processor would have to work extra to compile every time the app is opened from scratch.
ART changed this by compiling the code at installation, so no extra processing time and battery life were needed to be expanded to compile the app multiple times. What wasn't known at the time was that ART was just a "simple evolution of the Dalvik JIT," according to the ARM engineer.
Google must have looked for the easiest path to make AOT compilation possible without breaking too many apps when it came up with the "Quick" compiler of ART. However, as it is, the runtime can't be improved much more using complex optimization techniques. To apply those, the compiler would have to be written from scratch. The good news is this seems to be what Google has been doing in secret so far.
The "Optimizing" compiler is the next generation compiler for ART, and it will bring the following main benefits:
- big leap forward in terms of compiler technologies
- much better infrastructure for future optimizations
- great code quality
There are some downsides as well to the new compiler, as nothing really comes for free. Just like we saw apps take a little longer to install with ART's Quick compiler compared to Dalvik's JIT, the time period for app installations will also further increase with the new Optimizing compiler.
According to ARM, the file size and compilation time will increase by only 10 percent or less, which should be an unnoticeable difference for most users. What we get for that is a 15 percent increase in performance in the Linpack ST benchmark (floating point computation), and a 40 percent increase in the once-popular Quadrant CPU benchmark.
It's also important to keep in mind that the new optimizing compiler is still in development, and even after it becomes stable enough for a release, Google could still work on further increasing the performance.
ARM has been working with Google on the Optimizing compiler to provide feedback for the compiler design on the Aarch64 64-bit architecture (which Google seems to be targeting with the next generation of ART).