1

I'd like to know the performance of my app, particularly the rendering time of video frames. I'm aware of DDMS in Eclipse->DDMS Perspective->System Information->Frame Render Time. However, as has been asked in this other question, the rendering information doesn't seem to show up even when you 'Update from Device' while the app is running.

After some research, I came across this command from this blog and this other one:

adb shell dumpsys gfxinfo <package-name>

However, when I run that command, it completes running right away and I get an output that looks like this, in part:

enter image description here

That is, I do not get more than one line of profile data (often the result is empty). What can I do to obtain more than one point of data in order to graph it? Or, what other alternatives should I consider to assess the rendering performance of the application?

Community
  • 1
  • 1
kip2
  • 6,473
  • 4
  • 55
  • 72

1 Answers1

2

The correct tool is systrace (basic docs, verbose docs). You will need a device that supports it, and will need root for some of the more useful bits.

You can see what every thread is doing, and much of the graphics stuff is instrumented. I don't think the video codecs themselves are typically instrumented, so you won't be able to see hardware codec decode times, but you can see the buffers move through the system.

Most of the interesting stuff will happen in mediaserver or SurfaceFlinger, so you won't see decoding / rendering activity appear in method profiling for your app.

fadden
  • 51,356
  • 5
  • 116
  • 166