Friday, 15 July 2011

Profiling an Android application tutorial

I'm spending some spare time on an Android Reversi game which could need some performance tuning. After figuring out how the tooling works for Android profiling it works like a charm.

There are two ways to profile an application, using the debugging server DDMS or manually decide which parts of the code base are interesting for inspection. DDMS could be useful if you are inspecting code you might not be able to recompile. DDMS can also be used to inspect memory usage and more.

The easiest approach however is to use the debug interface provided by the Android API in your sources to specify when to start generating profiling information and when to end.

public int[] alphabeta(Board b, int maxDepth, long maxTime) {

      // Here goes code to profile
      return result;

Run your program and you'll see in the VM logs when the profiler kicks in. (As usual the performance of your app in the emulator will sink to the bottom when profiling is enabled)

Now you got your profiling info written to the SD card of your Android emulator device. If you run into permission issues when writing to the SD card, add something like this to your Android Manifest.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />     

To fetch the file to your development computer use the adb tool that comes with the Android SDK. On my Windows machine I did something like this.

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb pull /sdcard/othello_profiling.trace c:\temp\othello_profiling.trace
126 KB/s (2266911 bytes in 17.491s)

The tool traceview can interprete the file.

C:\Program Files (x86)\Android\android-sdk\tools>traceview.bat c:\Temp\othello_profiling.trace

Voila! You get a profiling view similar to what you get from common profilers like JProfiler, hprof etcetera. Here you can see each methods execution time and which parents and children methods it has connection to and much more.

Theres more you can do with the trace file. Traceview can also show you each threads exectution and calls in chronological order. You can simple zoom in on the interesting parts.

You may also want to try the tool dmtracdedump to create graphs over your call stack. See the Android documentation for more information.


  1. Your contents are too simple to read and easy to understand.
    Android Application Developer India & Android Application Development Company

  2. Great Post Thanks For Sharing

    For More Information You Can Visit This Website Android Application Development Solutions

  3. Wow this is a great post and Such a nice information you shared in this article, I like it. app development in dubai

  4. Hey, very nice site. I came across this on Google, and I am stoked that I did. I will definitely be coming back here more often. Wish I could add to the conversation and bring a bit more to the table, but am just taking in as much info as I can at the moment. Thanks for sharing.

    Custom Web Application Development

  5. That’s a great post. very informative article.

    For VoIP Dialers, WebRTC development, Digital Marketing and Social Media just try visiting our site!
    Digital Communications Specialist
    Our Main Services>Web Based Chat

  6. We specialized in quality VoIP dialer development, VoIP dialer for CRM and SIP dialer development, audio and video calling and chat development services.

    VoIP Dialer Development
    Best Chat Development

  7. Thanks for the inspired use of both new image sets, and that sentiment stamp is a must have. Your cards are wonderful; first time on your blog, but I'll be back!!
    Top seo companies in india

  8. Nice Blog!
    Facing error while using QuickBooks get instant solution with our QuickBooks experts.Dial +1-855-533-6333 QuickBooks Enterprise Support Phone Number

  9. Wonderful blog you have shared over here, i like the way you presented it. Thanks and keep it up.

    WebRTC Application Development in India