I was looking for a way to profile the GPU usage (and Frames Per Second) on a game built with Delphi XE6 Firemonkey for Android and I came across GameBench. The first app I tried to find the FPS in my app required root on the Android device. GameBench is the second app I tried and does not need root access. Basically you install the GameBench app on your phone and then you also install a GameBench app on your desktop machine which is connected to your Android device via USB. The desktop app is built with Java. Once you connect up the desktop app to the GameBench app on your phone you can add apps which are installed on your phone to GameBench. You launch the apps from GameBench after you add them and it creates a timer on the screen with a stop button. It logs data in the background until you press the stop button. It takes at least two or three minutes to collect enough data for it to give you a profile and it recommends at least 15 minutes. Once the data is collected you can view the log of the data and it shows you the FPS, the CPU usage, the memory usage, and the GPU usage. It has a graph over time of the CPU and GPU usage. Additionally it has a graph of the FPS over time. The FPS graph has another feature where it will take a screenshot that matches up with the FPS so you can see what was happening at that point. Unfortunately the screen shot feature it did not support Android 4.3. I tested two different Delphi XE6 Firemonkey games and one came out at 30 FPS and the other came out at 60 FPS. I also profiled a large enterprise app I’ve built with Delphi XE6 Firemonkey and it used ~119MB of memory. I’m not sure how accurate the FPS number is so you’ll have to test it out for yourself. As far as I can tell GameBench is free.
FMXExpress.com has over 700 tips and tricks for building cross platform apps on Android, IOS, OSX, Windows, and Linux with a single codebase and single UI using the FireMonkey framework found in Delphi and C++Builder.
FMXExpress covers top cross platform secrets for FireMonkey in C++Builder and Delphi XE5, XE6, XE7, XE8, Seattle, Berlin, Tokyo, Rio, and Sydney.