4 ms·
One note: The extra speed is by definition a bogus feature. If the apps were compiled natively for the processor in the phone, they'd already be running at full
by alain94040 16y ago
One note: The extra speed is by definition a bogus feature. If the apps were compiled natively for the processor in the phone, they'd already be running at full-speed. So therefore I gather that until now, the Android apps were running at a fraction of what the CPU(+) can do.
If I understand correctly, iPhone apps are compiled natively (from Objective-C). So they always ran much faster than Android apps, and now they probably still run faster, but less so. Am I correct?
(+) I used to design CPUs for a living
- mtinkerhess 16y agoIt's not fair to compare execution speed of Android apps and iPhone apps. There's always a tradeoff between faster development time in a higher level language and getting better performance in a lower level language, which has been debated to death on the nets for years. The fact is, the same code runs faster on Android 2.2 than it does on 2.1. That's not bogus, it's an objective measurement.
- wmf 16y agoWhen comparing Java and Objective-C, which one is higher level and which is lower level? The fact that Java uses bytecode doesn't necessarily increase productivity.
- mtinkerhess 16y agoI'd say the standout feature that puts Java at a higher level than Objective-C is garbage collection. You could also say that Objective-C is lower level becuase it's a strict superset of C. Admittedly, it's a murky distinction. Is there a good argument for why one might consider Obj-C to be the higher level language?
- othermaciej 16y agoObjective-C supports garbage collection (optionally).
- jcnnghm 16y agoNot on the iPhone. I'd trade performance for garbage collection. Memory leaks are very common.
- wmf 16y agoI'm not familiar with Objective C; is Smalltalk-style method dispatch considered more powerful than Java method dispatch?
- pkulak 16y agoI'd agree that Java isn't inherently better than Objective C. There are things I like and dislike about both. It's not like comparing Ruby to C. However, you do get other advantages to using Java. In Android, every app runs in it's own VM, so multi-tasking has always been a no-brainer. I guess Apple solved the sandboxing issues, but it probably wasn't easy, and I wonder what tough decisions they had to make. Plus, it's at least in theory possible to compile any language you like to Java bytecode. So, we could see Ruby or Python apps for Android at some point. That's never going to happen with Apple for about a dozen reasons, the least of which is probably Objective C.
- nex3 16y agoThe main reason for the speed increase is that Froyo introduces a JIT compiler. This means that the compiler will be able to examine the running code and make optimizations based on its behavior that can outperform statically-compiled native code. Especially for long-running processes (such as apps), this could make Android's Java code run faster than the iPhone's Objective-C.
- alain94040 16y agoI admit that I stopped following compiler research a while back, but I doubt that a JIT compiler would use run-time behavior to beat a static compiler. Do you have any reference or link to such optimization?
- wmf 16y agoHere are some optimizations that use runtime information: http://portal.acm.org/citation.cfm?id=346037 http://portal.acm.org/citation.cfm?id=346037 http://portal.acm.org/citation.cfm?id=353191 http://portal.acm.org/citation.cfm?id=353191