Possible explanation for jank in Android as opposed to iOS (20 millisecond core ramp on ARM/Android vs 50 microseconds on Apple/iOS)
Possible explanation for jank in Android as opposed to iOS (20 millisecond core ramp on ARM/Android vs 50 microseconds on Apple/iOS)

social.treehouse.systems
Hector Martin (@marcan@treehouse.systems)

More useful context:
https://social.treehouse.systems/@chadmed/110874563649736382
Interesting, I always thought it had to do with Android’s ungodly software stack which at some point involves, of all things, fucking java.
Android doesn’t use Java at a byte-code level and never has, as far as I can tell. Source code was written in Java since mobile developers were so used to it but Android never ran the JVM, they do their own thing with Java source.
You can dislike Java syntax but the software stack on Android wasn’t Java’s.
Wait, thats is very different from what I read back in the day. I know there was a point at, I dunno, android 5 where they started doing something different with java, but my impression was that android always ran a JVM of sorts. And frankly, given how it performs even on the highest-end devices, that was really easy to believe.
I guess I need to do some research now.
Dalvik/ART is essentially the same idea. It uses dalvik byte code, much in the same way the JVM operates.
There’s some complexity (it’s designed to do different things, and the whole Oracle lawsuits added some wrinkles) but it’s not so different as you imply.
They compile Java Bytecode to Dalvik Bytecode and run that on the Android Runtime which is a tiered JIT compiler.
It still inherits the issues of Java such as the GC, no stack allocated value types, poor cache locality, etc. Although tbf the GC on Android is pretty fucking good these days and doesn't pause the world anymore.
Java is only used for software development, there's nothing Java during run time.
ART?
This is not true. See above.