As Android becomes a larger and larger project, that needs to work on hundreds, if not thousands, of hardware configurations, Google is focusing more and more on compatibility, and a little less on raw performance. Android 4.0 came with some significant performance improvements thanks to enabling the GPU to do the graphical hard work, instead of leaving it to the CPU as before, but I’ve always thought that the ICS version was more about looks rather than raw performance.
ICS brought a pretty big overhaul in the looks department, made everything prettier and more polished, but this also requires a bit higher resources to make it all work properly, especially in the RAM department. Google is now recommending that smartphones with ICS should have at least 384 MB of RAM, and the CyanogenMod team has said before that they will only port CM9 to phones with at least 512 MB of RAM.
This was also Google’s “first” version since the overhauled looks, which means that everything might not be as optimized as possible, since again, they were more focused on the design part for this version, just like 2.0/2.1 was about improved looks, and 2.2 was about raw performance (Gingerbread was more of a transitional version). I expect JellyBean to have some significant performance improvements, with only a few changes in the looks department (although we may see some different UI or maybe more interesting widgets for the tablet version).
The Linaro team, who’s constantly working on optimizing software for the ARM architecture, has worked on optimizing the latest version of Android as well, and they claim up to 2x improvement in performance compared to stock Android 4.0.4, running on the same TI OMAP 4430 hardware. The improvements are mostly CPU-related, even though they are showing a graphical object to test the performance. They’ve managed to double the FPS for this particular test, but they’ve also managed to increase the Sunspider performance by 30%, which is also quite a big deal.
Linaro is going to submit the changes to AOSP, and CyanogenMod can also use them if they want, even before Google does it. You can watch the guy who put it all together talk about it in the video below, and I also recommending visiting the source link for his comment (Bero) and further explanations on this: