This post is the third in a series of 4 about attending the AppsWorld conference in London.
Rufus Mall, one of our Application Engineers was interested in the Android track. Rufus has mainly worked on our 3D visualisations and iOS application (VentusAR and 3DTry.it) so he knows his way around iOS very well, but is just starting to learn Android.
As a company it is important to us to know what else is going on in the app development world. The best way we could think of doing this was to head to AppsWorld in London last week. Four of us attended and I have asked the guys to write up their thought on what they saw and learned.
Performance & Profiling Android Applications
Mario Zechner of BadLogic Games gave a talk on optimising Android application performance to reduce application size, improve memory usage and improve performance. As an iOS developer new to the world of Android it was interesting to learn about the tools available to Android developers to improve the performance of their applications and in effect improve the User Experience for their end users. For the Google play store APK files have a maximum size of 50mb. Solutions given for this problem included: Creating Multiple APK files for the same app which could each have resources for certain classes of devices instead of trying to fit them all into a single APK file. Another was to use “Expansion Files” which are files of up to 2GB which can store data up which supplement the APK and are downloaded to the device alongside the APK.
In the case of memory management and performance profiling Mario explained that its possible to leak memory even when developing for a Garbage Collected environment. He gave an overview of many tools of which DDMS stood out. This tool allows the developer to view memory allocations that are occurring on the device. Allocating objects during the lifetime of the application which instead be reused leads to more overhead when the garbage collector runs. In Mario’s example game, reallocating a simple “Color” object every frame was leading to the application intermittently skipping two frames. DDMS also can be used as a method level profiler which allows the developer to check how often certain methods are being called and how much CPU time methods are taking, allowing the developer to target optimisation.
Mario also mentioned other tools such as using the “Show GPU Overdraw” setting available in Android 4.1+ to show which graphical objects are being drawn on top of other items and also showed the “OpenGL ES Trace Tool” which allows the developer to move through the OpenGL calls one at a time to see the visual effects of OpenGL calls, and the amount of time the OpenGL calls are taking to execute.
The slides for the talk are available on slideshare at: Of Bytes, Cycles and Battery Life. The references include many useful links. A must read for anyone who develops performance intensive applications!