Building for ARM64

Now that I finally released the Android version of Zoing and Zoing Zero to the Google Play Store, I now can finally start working on some new features. But, before doing that I need to provide 64 bit support, as described by Apple. Fortunately, Xamarin makes this pretty easy. I recently updated my game to the Unified API, which includes support for ARM 64, and was entirely painless.

Aside from the requirement to do this, I also wondered how much of a performance improvement it might give me. I benchmarked Zoing built for ARM7, ARM7s, and ARM64. All of these runs were done on my iPhone 6 Plus.

Clearly the build that includes ARM64 does provide a huge performance improvement (average FPS of 622 compared to a best of 482 for previous builds). I find it interesting that the ARMv7s does not provide any benefit of ARMv7, but again this was testing on a iPhone 6 Plus, which contains the ARM64. Perhaps if I tested on an iPhone 5S I would have seen something different.

I should also explain these FPS numbers. iOS actually limits OpenGL animations to a maximum of 60 FPS. For the purposes of this benchmark I run my game's logic loop as fast as I can, but show the screen only once every 1,000 logic-loop cycles. This allows me to benchmark my code's efficiency as well as these CPU changes.

I will try to blog a little more often going forward, but I've said that before too. ;-)


  1. I don't know about mobile development, but your screen refresh rate is most likely 60 Hz. I wonder if having more fps has a good effect on user experience. My guess is that 70 Fps is actually detrimental to UX because of time aliasing.

  2. Yes, you're right. The above number are only during benchmark mode, when running as fast as possible. In normal play mode it is locked at 60FPS (or as fast as the device can handle up to 60 FPS).