Как я могу профилировать приложение для Android?

Мне нужно найти, где узкие места находятся в моем приложении для Android.

Какие инструменты или методы профилирования я могу использовать?

Ответ 2

DDMS лучше всего подходит для Android. По умолчанию он включается в плагин ADT.

Этот документ с подробным примером поможет вам разобраться с DDMS.


Для анализа памяти попробуйте Eclipse MAT

Ответ 3

Это зависит от того, что вы собираетесь тестировать.

Если вы разрабатываете приложения для Android, вы должны попробовать класс TimingLogger. Взгляните на эту статью, в которой описывается использование вспомогательного класса TimingLogger.

Очень хороший инструмент JMeter, и есть плагин для Android.

Если вы не хотите использовать внешние инструменты, но очень стандартный способ, чтобы измерить прошедшее время, вы должны использовать System.nanoTime(). Вы не должны использовать currentTimeMillis, потому что он измеряет время работы настенных часов, так как никакие компьютерные часы не идеальны (их все время нужно исправлять) есть процесс, который выполняется и постоянно выдает небольшие исправления системным часам. Не говоря уже о второй коррекции прыжка.

Несмотря на то, что currentTimeMillis часто используется, он по-прежнему неверен для измерения истекшего времени и времени. Во всяком случае, поскольку вызов занимает некоторое время, вы не должны ожидать правильного времени очень очень малых интервалов. Но это не должно быть проблемой для Android.

Я покажу вам пример:

long startTime = System.nanoTime();

// run/call the method

long endTime = System.nanoTime();
long diff = endTime - startTime ;
System.out.println("Elapsed milliseconds: " + diff /1000000);

Вы также можете посмотреть эту бесплатную библиотеку: http://jetm.void.fm/.

Вы также можете найти учебник для JMeter.