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.
Hiya! GameBench here! FPS is generated by using the timestamps of every frame drawn, so by its very definition, it is FPS 🙂
Thanks so much for using the app, if you’ve got any feedback please feel free to shoot me an email 🙂
Cheers,
Jake Daynes
Sr. Developer | Product Manager
GameBench Ltd.
Accurate in the context of Firemonkey not questioning GameBench’s accuracy 🙂
Control of frames per second is kind of obfuscated from the developer with Firemonkey. So for example I don’t know of a reason why in the context of Firemonkey one of the games would be ~60 frames per second and the other only ~be 30 frames per second. The framework is the same but the gameplay is a bit different. Whereas the enterprise app I tested was only reporting ~4 frames per second (though I saw spikes to ~60 FPS) which is not necessarily a bad thing. It may not need to draw more than that. It may scale it’s framerate as necessary rather than running at maximum the entire time.
So yes GameBench knows the number of frames per second but Firemonkey is deciding for itself how many frames a second to draw. And that number is odd when compared to what I am use to seeing from other development tools (like Adobe AIR) where the developer configures a framerate up front and if the environment can meet that FPS it will.