The team at Linaro has done an amazing job at optimizing Android 4.0 for ARM and Bernhard Rosenkränzer, Android Engineer at Linaro among other things, has put all those optimizations together to showcase a demo at Linaro Connect Q2.2012 in Hong Kong with 2 pandaboards:
- One running Stock Android 4.0.4, the one released by Google (AOSP)
- One running Linaro Android 4.0.4
Both hardware, android version and benchmark software (oxBench) are the same, and the results are quite amazing with Android Linaro achieving about 60 fps in all 0xBenchmark tests (OpenGL Cube, OpenGL Blending, OpenGL Fog and Flying Teapot) whereas Android stock achieving 30 fps. They selected a benchmark tool that is mainly CPU bound, as they cannot optimize the GPU code since they can only access binary blobs.
Apparently, most of the improvements were possible thanks to toolchain and code optimization (to be able to build) such as using gcc 4.7 and building Android ICS without -fno-strict-aliasing and with -O3 compiler flag (first released in Linaro 12.01). So that means for this particular benchmark, they achieved to double Android performance just by “tweaking” the software. [Important update: A detailed analysis shows the benchmark is somewhat flawed, and it’s a VSync thing that makes Android appears to be twice as fast. In reality the improvements are in the 20 to 30% range, which is still very good with just software optimizations. Bero also notes that 100% speed improvement may still happen in real apps such as 3D games that may also wait for VSync to refresh the screen].
I know you don’t believe me… So have a look at the video below. 🙂 (Source: Charbax)
[Update: If you want to try it yourself and access the toolchain and source, please see Bernhard Rosenkraenzer (Bero) comment below with all the information you need.]