Swiss Firm Claims Boost In Android App Performance
Precision writes to inform us about the Swiss firm Myriad, which claims a 3x boost in Android app performance and longer battery life with a new virtual machine. Myriad says that its technology is 100% compatible with existing Android apps. "The tool is a replacement for the Dalvik virtual machine, which ships as part of the Android platform, and retains full compatibility with existing software. Dalvik Turbo also supports a range of processors including those based on ARM, Intel Atom, and MIPS Architectures."
Gimme a break. *Every* JVM company out there claims to have the best performance.
Probably something to do with on the fly optimization of JITted code. Or maybe GC optimization and memory management.
It must be Press Release day here at /.
Towards thee I roll, thou all-destroying but unconquering Virtual Machine.
The power of open source.
... allowing them to implement certain optimizations specific to each architecture. But I don't see any indication of that. Anyone know where the big speedup came from? Myriad's press release just sounds like Chuck Norris decided to dabble in software development ... they just looked at Android and it became three times faster.
How very very fortunate for everyone involved (unless the problem was the original Dalvik developer's sleep statements). The article is scant on details and the official press release is also very thin. My big question is whether or not we'll see this quickly adopted and rolled out by manufacturers who've already released Android. For me, assuming this is bug free, I'd like to see how my Motorolla Droid performs on Dalvik Turbo. Will it be as simple as swap image and reboot to switch between the two? Is anything lost in this transition?
At first glance I was certain that they had compiled and optimized the virtual machine to be specific to an architecture
My work here is dung.
JIT produces similar improvements in the Google JVM, although it is not currently turned on.
JIT is indeed faster. I am not shocked that a Googleplex full of PhDs is already moving in this direction. Google details are at http://groups.google.com/group/android-platform/browse_thread/thread/331d5f5636f5f532?pli=1
"To any truly impartial person, it would be obvious that I am right."
Back in my day, manufacturers used to slap a turbo button on the front of the case.
And we liked it that way.
Now get off my lawn!
[Fuck Beta]
o0t!
droid does?
Mod me down, my New Earth Global Warmingist friends!
Does this imply that on more or less identical hardware (latest ARM + similar battery), the iPhone will always run apps faster and will always have better battery life than an Android phone?
If JIT produces such a noticeable performance boost, does that suggest that the difference between next-gen Android and iPhone will be negligible, or will there always be a significant gap? And if the gap will remain significant, should we care?
Posted from my Android phone. Oh, I can change this? There, that's better...
Nur i de Schwiiz!
Hopp Schwiiz!
Writing up a blurb saying you have something is one thing.... show us some proof, numbers,... something other than
a claim that you have something.
I am sure Google went over performance and if it could be made to perform better it would have been done. (I Hope... Google?)
I can say I have a million dollars, does not mean I do.
As I understand it, Dalvik is basically Java, mostly. Sun has, for a long while now; been chipping away at the problem of making Java perform well. For whatever reason, Java applets never seemed to receive any benefit, and have always felt horribly slow; but Java has seen enormous use in both Big Serious Corporate Iron applications and in tiny, embedded dumphone applications. Much of that development has been in the open, either directly OSS or at least visible in comp-sci papers and talks and such.
Then Dalvik comes along, and now somebody is claiming 3X speedup. What could Google have missed, or not had time/resources to implement that some random outfit did? Was Dalvik unexpectedly perversely bad for some reason? Was there some untapped java-optimization-fu floating around out there? Did somebody just put out a press release about their own horribly unstable version of what is currently in Google's "unstable" branch?
Check his wiki, this guy is the real deal. He is the architect of the BeOS file system, something that still hasn't been surpassed in flexibility and efficiency - the crown jewel of the BeOS code. Trolltech's QT also improved a lot under his reign. I would say that this guy knows a lot about writing optimized code, and Google should be very happy that he's turned his attention to Android. If I were Google, I'd be thinking hard about buying out this plucky little startup from Switzerland.
they are a founding member of the OHA, and claim to have 10% market share ("one out of ten phones in the market today") with their Jbed Java Mobile platform.
So, it's not like it's some startup with no experience in that market, trying to make a name for itself. In fact, they would seem to have more to lose than gain by making overzealous claims.
"National Security is the chief cause of national insecurity." - Celine's First Law
How to build a flawed API in Java...
If a library's performance depends strongly on GC performance, then the programmers should refactor their code to reuse existing objects rather than building new ones all the time.
The absolute worst thing you can do in an object oriented language, which is intended to be used in an object oriented way, is to instance objects without the instancing of them initializing them. The original Java Mail API did this, and it was a steaming pile because of that. I would probably go so far as to suggest that any object oriented language which permitted this was not designed correctly. To reuse the objects, you'd have to be able to reinitialize them, which is basically the same thing.
The typical problem with Java programs and garbage collectors is chasing force-zeroing of pages because they release the memory back to the system, and their security model requires that the memory be zeroed before it is reused by the program. Being a little bit time lazy about doing your GC to reclaim the memory on behalf of the system rather than on behalf of the program you are running almost always results in significant performance improvements in things like Physics engines. In other words, you want a little intentional latency between the time you collect the garbage, and the time you deliver it to the dump.
One of the most obvious recent offenders is Apache Lucene , specifically , which works just great, if you don't do the finalize() and cause the objects to be collected way too early.
So the problem usually boils down to a greedy garbage collector, which is a problem in the JVM, not the library code.
Of course on tiny platforms, the JVM footprint gets pretty large, so you'd also need to gather and LRU the freed heap to avoid it growing out of control from the latency; so you'd need a high water mark as well as a timed delay.
Personally, I really hate garbage collection as a paradigm, especially the garbage collection in Objective C. It claims to be optional, but isn't: as soon as you have one framework that doesn't do an explicit release of an object, your program is forever after addicted to the garbage collector, and slowly accumulates leaks which are "fixed" by the garbage collector, until what you have left is code you can't reuse without also doing garbage collection, infecting any project you bring it into.
-- Terry
Why would this be needed? Everyone tells me java is twice as fast as C? This must make it three times faster than C, impressive.
Got Code?
I imagine a big part of the speed increase comes from JIT - something that the current Dalvik implementation on Android doesn't do. There is, however, an experimental JIT branch. It would be nice to see how Myriad's stacks up to it. This test claims about a 3x increase in speed by enabling the existing JIT features.
Plucky little start-up indeed.. They were called Esmertec in a previous life, and have been around a long time (in mobile phone years). I believe they provide(d) the java implementation for a large share of Sony Ericsson handsets They merged with another company, purple labs, which also came out of a whole host of mobile phone software companies, including the Openwave client software division..
Java hardware acceleration was discarded by the Android platform.
Imagine if someone were to translate Dalvik into a bytecode that is compatible with the inbuilt Java acceleration of most mobile-market processors.
The fact that Android uses Dalvik instead of Java throws away an important hardware-based performance boost of native Java acceleration.
Kriston
Unlike a C compiler, a JIT has runtime type information and statistics. That makes it potentially faster than Objective-C and even C. For example, Java JITs routinely inline method calls that in Objective-C always have to go through dispatch logic.
This project looks like it opens the door for a real JVM that runs real Java apps, real Java bytecode, not the Dalvik bytecode that has to be developed for specifically the Android platform. With a real JVM, some Java bytecode already available for download could just work, and porting a lot of the rest should be a lot easier. Which would open up a much larger existing community of developers to target these devices with apps.
--
make install -not war
I find apps spluttered around everywhere, it would be good for someone to aggregate mobile apps that are universal for each handset rather than the current mish mash.
The marketing department of the company put some videos online:
http://www.youtube.com/user/myriadgroupmarketing