Upcoming Frozen Goodness

Folks, we have a Nexus One. We also have Froyo. In fact, we have the two mixed together in the most delicious frozen-yogurty Android 2.2 kind of way you can imagine.

Not much has been officially released by Google about Android 2.2 - probably less than any other release to date. We all have a hunch about some new features but Google wouldn't officially confirm or deny any of them, other than the one about Flash 10.1.

They're saving it for May 19th-20th, and we're OK with that.

However, one of our team members has been playing with a Nexus One running Froyo for about a week now, getting more and more visibly excited every day.

Before we proceed, however, here's a quick picture to squelch any non-believers. These are not fakes and we will be playing with the phone on video very shortly.

Yes, it runs Flash, and it runs it very well (we'll demo that separately but you can get the idea here).

As you've seen it already, it has a new home screen menu but we won't talk about that today.

Froyo 2.2 Performance

Today, we would like to point out the results of some speed tests we've been running on Froyo, using a tool called Linpack.

These results are so impressive, most likely due to the introduction of the long awaited JIT compilation into the kernel, that we felt they deserved immediate attention.

Linpack

Linpack for Android was specifically created to test the performance of Dalvik VM which, in short, is the heart and the brains of Android.

The benchmark calculates how fast your phone can operate, which can then be used to compare various phone models' relative performance. Linpack allows users to publish these results to its online tracker, but we'll talk about that a bit later.

Here's a brief introduction to Linpack by the authors themselves, with interesting parts bolded:

The LINPACK Benchmarks are a measure of a system’s floating point computing power. Introduced by Jack Dongarra, they measure how fast a computer solves a dense N by N system of linear equations Ax = b, which is a common task in engineering. The solution is obtained by Gaussian elimination with partial pivoting, with 2/3*N3 + 2*N2 floating point operations. The result is reported in Millions of FLoating-point Operations Per Second (MFLOP/s, sometimes simply called FLOPS).

This test is more a reflection of the state of the Android Dalvik Virtual Machine than of the floating point performance of the underlying processor. Software written for an Android device is written using Java code that the Dalvik VM interprets at run time.

What is the purpose of this app? This is a simple benchmark test to show performance relative to other phones for a standard calculation. Linpack has been used for years on all types of computers, with a version used to rate the TOP500 computers in the world.

What speed is better? A higher number is better.

Does having faster speed improve the android phones or what? Yes, it should. The Dalvik VM has a huge impact on the Linpack number. A better number on the same device would indicate that a new version update has improved performance. Or it could show that something has gone terribly wrong if the number goes down.

But enough about Linpack - let's take a look at how Froyo performs.

Linpack Scores

Just so you have an idea of the kind of scores you can expect from the benchmark, let me list a few sample numbers:

  • the Nexus One running Android 2.1 gets about 6.5-7 MFLOPS
  • my HTC Hero averages a measly score of about 2 MFLOPS (the phone is pretty slow indeed)

Here is a screenshot of the last test I ran on the Hero:

Froyo Linpack Score

So how does the Nexus One with Froyo do?

A whopping 37.5 MFLOPS.

Think about this for a second. 37.6, compared to 6.5-7 - that's about a 450% speed improvement.

Conclusion

Things are starting to finally come together. Flash and huge performance gains, all in the same release. Flash is CPU hungry, so Android makes everything about the environment more efficient.

Do you see it? Adobe wasn't giving Apple what they needed, and Apple wasn't giving Adobe, well, anything.

But Google thought of the problem outside the box, like the ingenious engineers to the core that they are and made Android so much faster than it could finally run full Flash without a hitch.

Oh yeah, the phone is indeed noticeably faster.

Some of you (like Cyanogen and Uhhhh) pointed out that JIT compilation only helps programs that are not compiled to native code, which Flash and some video codecs/drivers seem to be. Thank you for this clarification.While real-life improvements will most certainly not be 450% across the board, we still expect the N1 and even Flash to benefit from JIT because, as other programs become more efficient, more CPU will be available to such natively compiled programs.

These mysterious numbers from the Linpack Top 10 don't look so fake anymore now, do they?