iPhone vs Android
Paulo Pinto via Digitalmars-d
digitalmars-d at puremagic.com
Tue Sep 13 01:51:29 PDT 2016
On Monday, 12 September 2016 at 22:57:23 UTC, Andrei Alexandrescu
wrote:
> An interesting article written for laypeople:
> http://www.theverge.com/2016/9/12/12886058/iphone-7-specs-competition
>
> One quote that may be of relevance to us: "As to the iPhone’s
> memory, this is more of a philosophical distinction between
> Apple and Google. The former is neurotic about killing
> background processes and dumping background apps from memory in
> iOS, whereas the latter is more liberal with app management in
> Android (though Google is gradually moving toward the Apple way
> of doing things). The upshot is that an iPhone can feel super
> smooth and responsive with half the RAM of an Android device.
> RAM consumes power, so having less of it is another factor
> contributing to the iPhone’s efficiency lead."
>
> This may be interpreted as follows: the iPhone uses native apps
> with reference counting whereas the Android uses a virtual
> machine with tracing garbage collection. It follows that the
> latter needs more memory for the same performance, and is more
> jerky in behavior than the former. Wondering to what extent
> this is true. If it is, that provides more impetus for
> reference counting for D by the following logic: (a) it is
> likely that in the future more code will run on portable,
> battery-powered systems; (b) battery power does not follow a
> Moore trajectory, so at this point in history demand for
> battery lifetime is elastic.
>
>
> Andrei
Just some update on your information, the Android story is much
more complicated than having VM.
They had a VM up to version 5.0, afterwards Java bytecode
(actually Dex) is compiled to native code at installation time,
then there is just the language runtime, just like D.
Now with Android 7, due to the big compilation times, specially
when large applications need to be updated, they have an hybrid
design. An interpreter written in Assembly that makes use of a
JIT for hot code, then the JIT makes use of PGO and when the
device is plugged and charging, the hot code will be AOT compiled
to native code and never JITed or interpreted again until a new
update takes place.
Likewise the GC algorithm in Dalvik is pretty lame, even some
J2ME JVMs do better than it.
However that was changed in ART, updated in Android 6.0 and
changed again in Android 7.0.
So it is not easy just to say Android works like X, because X
depends on the Android version and OEM build, as some of them do
also change the AOSP runtime and compilers behaviors.
Also for additional comparison, the Windows Phone also has a mix
of RC (WinRT now renamed as UWP) and GC (.NET Native / Chackra
JavaScript VM), yet the devices perform much better than similar
Android devices.
Also Microsoft does a full AOT build to native code on the WP
Store, instead of using the consumer devices for AOT compilation
like Google does.
So it is not that easy to generalize the OS behaviors like the
article does.
More information about the Digitalmars-d
mailing list