There's been an optimization movement afoot since last year called Linaro.
It's been making its way into Android bit by bit, you can expect to see custom roms compiled with a bit of it already.
The following video shows it being unleashed for the first time back in 2012.
You may note with interest that the processor chosen at the first target for that demonstration is the OMAP 4430 - reminder: the one in the GNex, so now we're topical to that as well as Android.
You all heard me talk about the power of that processor in the pre-release thread.
That video finally illustrates what I meant was possible. From how Google talked back in 2011, that's the performance we all expected anyway.
The next stage in optimization,
rumored for Android 4.4, is to transform some of the Java code into native code.
The optimizations there are more about time lost for context switching than native vs. Java.
That work was demonstrated in 2010 but we learned only recently (10/22) that Google has been busy for a year buying that technology and has finally done it.
Google's FlexyCore purchase could mean a smoother Android
The samples from 2010 have been pulled by Google now.
THAT story is the source of the latest belief that there's something converting Java out of the Dalvik and into native code.
It hasn't been deployed before and it's pure speculation if any of it is in 4.4.
Personally, I don't believe at this juncture that it's in there yet.
The respondents there were upset that the question was wrong.
I have to agree because it's blending the difference in languages and operating systems and trying to make it a language question.
The apples to apples comparison for starters is how does Java compare to native code on Android?
Answer below:
So - it's not huge, just taking the native code bit.
However, some things DO benefit from that optimization.
Here's a video showing the difference Flexycore makes on a TI development phone using the - wait for it - OMAP 4430 found in the GNex.
So that leaves the final difference - Android vs. iOS and that's Han's question.
Good news!
I come bearing few opinions and many facts.
The first fact is that Android lag and fluidity vary a lot by user within a given device model and that has a simple explanation due to two other facts - not all apps are created equally and Android is rich in configuration options, both affect the end result.
So why has iOS been more fluid, even on lesser, slower processors with less ram?
First fact - prior to iOS 7, their multitasking has been slim - it's cooperative multitasking while ours is preemptive multitasking.
Focus on that fact above - all blessings and curses flow from that single design difference between iOS and Android and that's the big fact.
If you ever ran Windows 95, then you've run cooperative multitasking before. Modern Windows is preemptive, so is OS X, Linux and therefore Android.
In a cooperative multitasking system, the foreground app takes over nearly everything. You know that from Win95. Curse iOS.
And if that's all your processor has to support, then it can do a rocking a job and not have to be a beast processor. Blessing iOS.
Android can't be that way because it's based on Linux. Curse Android.
But that architecture lets Android have a lot more flexibility and configurations. Blessing Android.
With me so far?
So the first outcome of that difference is -
- when Apple changes processors significantly, apps have to be redone and re-optimized and then re-aquired by the end user when available
- not Android, when dual core and then quad core hit we didn't need all need new apps (many of you may remember my assurances on that from the pre-release thread and if you do remember that, then you know from experience I was sharing a fact then) - the architecture makes it so apps don't care
- Advantage Android for ease of platform choice by users, advantage iOS for highest level of per app optimization
Finally, iOS allows some apps to play a trick called GPGPU - general purpose processing using GPU cores that are available.
That's another old trick, I used to write GPGPU applications in assembly for HP workstations back in the early 80s.
That code is not transportable and not something you really want to go for in Linux.
But - a number of iOS apps do that. I know in particular that their pro media editing app used by pro photographers do exact that.
And that's attractive in the iOS world because what Apple processors lack in CPU power, they make up in their GPUs. Apple's always been media centric and since the change to OS X way over a decade ago, they've been focused on media (introducing the iPhone, our best iPod ever - look it up, that's was Steve's keynote speech when they launched it) and PDFs.
I mention that as a point of interest to Han - when OS X hit, it took nothing to convert anything to a PDF, the underlying tech was built into the desktop itself. Windows users had to buy Adobe Distiller back then and Linux users were converting postscript into PDF by hand in those days.
But the simple version of all this comes down to what you already know:
- Apple chooses your hardware for you so you don't make the wrong choice and all of the software exploits that
- Within the limits of the closed choices available
- You cannot send me a youtube that I cannot play on my Android phone (except for where I'll respect copyright restrictions).
- I can send a youtube that no iOS user will ever see until they get home.
- Android lets you choose any hardware and then adopts two burdens:
- Android responds better to better processing and memory resources
- It's up to Android to produce competitive optimizations because the architecture says - don't force that entirely onto the app developer
But in the really advanced media processing apps - raw digital image processing, soundboard mixers and PDF markup apps as well as a number of games - iOS is still winning because their optimization techniques allow them to.
Each iteration of Android is bringing new optimization techniques that is allowing the gap in those areas to be closed.
^Those are all facts.
I promised some opinions as well, here they are -
I think that eventually all of the scales will tip in Android's favor..
I think that if Google coorporate stops focusing on that and continues on their Apple-like path lately adopted to bring you into a closed world that they control for profit, then Android will become closed and a new open competitor will emerge. See me on the forum for that new platform when the day comes (and it's not going to be Ubuntu or Firefox - I don't know what it'll be, but it won't be those).
There is no perfect device or mobile operating system. Get what works for you and for your needs, whatever it may be.
These companies are not our friends, they're our suppliers. If we buy what we really like and need then if they're smart, they'll continue to improve their offerings to us to compete for our money.
Bling bling, dollar dollar bill, y'all. - Wu Tang Clan Financial
Advantage - us.