|
|
|
|
|
by Zigurd
4619 days ago
|
|
Mainly due to differences in multitasking. Android always enabled completely general multiprocessing and multithreading, initially at the expense of smooth visual effects, and Android was implemented on a variety of CPUs and GPUs. Secondarily, Android didn't used to have concurrent GC. Thirdly the animations were not tuned (q.v. Butter). Fourthly, the graphics stack was tuned to use more GPU-based operations as mobile GPUs improved. If you know you have only OS overhead when you are the foreground task, lots of things get more deterministic. But that does not mean you have more total throughput. For that matter, Android didn't have low-latency audio until 4.2. Try taking a look at how many processes, and Dalvik instances, are running concurrently at boot time on an Android device. Then try just starting that many VM instances, of any VM, on any other OS. The reason Microsoft has gone to pre-compiling "in the cloud" is that otherwise the CLR has a miserable startup time and mediocre performance. The CLR architecture is much more like a conventional Java VM. You can't build a whole OS on a managed language implementation of OS features with that level of performance. I'd wager Microsoft has a much rougher road ahead stuffing a real Windows kernel into handsets and maturing CLR performance, memory efficiency, and battery life for comparable computing tasks that Android handles well in all performance dimensions. |
|
It still doesn't, https://groups.google.com/forum/#!topic/android-ndk/qACobHa8...