Profiling on Android devices

Post Reply
sgraham
Posts: 7
Joined: Sun Aug 18, 2013 8:50 am

Profiling on Android devices

Post by sgraham »

I have been testing my app which uses Bullet on 3 different Android devices. Spec wise, each of the devices have pretty much the same hardware except for RAM (which I shouldn't be using a lot of), yet 2 of the devices run a LOT slower. I'm curious if anyone can tell me why that might be, and more importantly, if anyone knows a fix. Also note that all I have in the scene is a static tri-mesh for ground < 100 tris, 1 primitive sphere collider, 1 texture loaded and some basic lighting - using OpenGL ES2.

Nexus 4 (fastest - runs smooth) - 2GB RAM Android 4.3
Prime TF201 (slow) - 1GB RAM Android 4.1
Ouya (slow) - 1GB RAM Android 4.1.2


I managed to do some profiling today on my native code, which is where Bullet is being used. I was surprised to see that a lot of the slowdown came from Bullet, not GPU commands or fill rate as I had suspected (at least as far as I can tell.) I am new to profiling however and wondering if anyone would mind taking a look at my data or give me pointers on how to interpret the data.

For example, one big difference is btCompoundCollisionAlgorithm::processCollision() running 8.82% of the time on the Prime where on the Nexus4 it took ~0%

On the Ouya profile it shows a whopping 20% used by btVoronoiSimplexSolver::updateClosestVectorAndPoints(), where I didn't see that one at all in the other graphs and have no idea where or what might be using that function.

Does anyone familiar with these functions know what might be causing the rather large differences? Could it be the RAM or Android OS or something I am doing wonky or just reading the data wrong?
Attachments
GProfsAndDots.zip
gprof data provided by android-ndk-profiler. Dots were converted from gprof for viewing in GraphViz
(16.33 KiB) Downloaded 803 times
Post Reply