How to test the performance of an Android application?

Bharat Pawar picture Bharat Pawar · Dec 24, 2009 · Viewed 48.7k times · Source

How can I test an application for performance in Android? What is the support provided in Android and how do I use it?

Answer

Dave Webb picture Dave Webb · Dec 24, 2009

If you want to profile your application to find performance bottlenecks you can use the traceview tool. This gives you a graphical view of performance traces of your application.

To create a trace add the following to your code where you want to start tracing:

Debug.startMethodTracing("myapp");

and then put the following when you want to stop tracing:

Debug.stopMethodTracing();

This will create a trace file call myapp.trace in the root directory of the SD Card. As it is written to the SD Card:

  • If you're using the emulator you'll need to add an SD card to your AVD.
  • You'll need to give you app permission to write the SD card by adding the following to your Manifest:

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

Once the file has been created you'll need to copy it to your PC. You can do this using the adb command:

adb pull /sdcard/myapp.trace c:/my/dir/myapp.trace

Finally, start traceview giving it the full path to the trace file:

traceview c:/my/dir/myapp.trace

I did have some problems with traceview failing with OutOfMemory exceptions. I fixed this on Windows by changing the last line of traceview.bat from:

call java -Djava.ext.dirs=%javaextdirs% -Dcom.android.traceview.toolsdir= -jar %jarpath% %*

to:

call java -Xmx1g -Djava.ext.dirs=%javaextdirs% -Dcom.android.traceview.toolsdir= -jar %jarpath% %*

Adding the -Xmx1g option allows traceview to use more memory.