The Google Nexus One originally wowed us with its 1GHz Snapdragon processor, handily beating the 600MHz ARM core that powers the iPhone 3GS on raw performance. However, it turns out that the iPhone's combination of PowerVR SGX GPU and support for ARM's Neon floating point optimizations still give it a significant edge over the Nexus One when it comes to 3D animation.

Mobile developer Distinctive Games used a 3D game engine that taxes both the CPU and GPU to compare performance between an iPhone 3GS and a Nexus One. With a rendered background and two characters, iPhone clocks 60fps while the Nexus One manages just 30fps. The Nexus One has a much higher resolution than the iPhone—800 x 480 versus 480 x 320—so the Nexus One was limited to the lower resolution, resulting in an increase to 40fps. As the number of on-screen characters ramped up to eight, however, the iPhone managed a just-playable 29fps, while the Nexus One dropped down to 21fps.

Distinctive tested the devices further and found that two things were limiting the frame rate. The GPU in the Nexus One appears to not be as robust as that in the iPhone for 3D performance, and the CPU is being limited because the Android NDK (native development kit—used for apps that need direct hardware access, like games) doesn't utilize ARM's Neon floating point optimizations.

There is a workaround that allows taking advantage of the Neon instructions, but it involves recompiling the whole Android OS using GCC, and updating to a newer version of GCC for NDK compilation. iPhone developers already gain the benefits of these optimizations using the Xcode tool chain.

Android uses a Java-based SDK and Google's own virtual machine for standard app development. The NDK, which enables native hardware development, is still relatively new. An expected hardware revision to the iPhone this summer—which may include a custom Apple-designed ARM-based processor—along with its more mature SDK, should keep the iPhone platform at the forefront of mobile gaming for some time to come.