How to deal with an insanely high "cpu-present" stats?

Hi there,

I’m currently profiling my game on my android nexus one and I’m getting very high numbers in cpu-present which, if I understand correctly, means that I’m gpu bound. My game consists of a straight road with lots of objects that you have to avoid and they are flat sprites. I know alpha testing/blending can be hard on performance but I’m getting an average cpu-present of 50-60 which is insanely high.

However, before trying to optimize anything, I did some tests and an empty scene with only a few hud elements still gives me an average cpu-present of 30ms, that seems pretty unacceptable.
Look at these profiler stats from my Nexus One from a totally empty scene.

----------------------------------------
Android Unity internal profiler stats:
cpu-player>    min:  2.2   max: 20.5   avg:  6.0
cpu-ogles-drv> min:  0.2   max:  1.5   avg:  0.4
cpu-present>   min:  8.2   max: 33.3   avg: 23.0
frametime>     min: 15.2   max: 42.4   avg: 29.4
draw-call #>   min:   1    max:   1    avg:   1     | batched:     0
tris #>        min:     2  max:     2  avg:     2   | batched:     0
verts #>       min:     4  max:     4  avg:     4   | batched:     0
player-detail> physx:  0.4 animation:  0.1 culling  0.0 skinning:  0.0 batching:  0.0 render:  2.0 fixed-update-count: 1 .. 2
mono-scripts>  update:  2.6   fixedUpdate:  0.0 coroutines: 0.2
mono-memory>   used heap: 4317184 allocated heap: 5033984  max number of collections: 0 collection total duration:  0.0
----------------------------------------

I even went further and created an empty unity project and published to my android and I still get avg 15 for cpu-present, is Unity Android still unoptimized? I can’t even get 60fps with an EMPTY scene, that’s pretty insane.

Furthermore, I get very decent framerates on the iPad 1 and the iPhone 3GS with the same project, absolutly nothing like these profiler numbers.

Does anyone have ideas or pointers to fix that?

Check out this thread.

It pretty much covers everything. And yes it means you are GPU bound more than likely. And that’s just a matter of optimizing your graphics. The list is everywhere of what you need to do… reduce drawcalls, batching, avoid transparency where you can. Alpha Blending and Alpha Testing are both costly, but you should lean towards alpha blending when you can.