How can I test an application for performance in Android? What is the support provided in Android and how do I use it?
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:
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.