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

93

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

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

Teedyay
источник
Я не знаком с Android. Можете ли вы запустить приложение под отладчиком, который можно прерывать? Если да, то этот метод работает: stackoverflow.com/questions/375913/…
Майк Данлавей, 06
Ммм, интересно. Немного трудоемко, но потенциально полезно для выявления наиболее серьезных проблем с производительностью. Спасибо.
teedyay
Я понимаю, как вы могли так думать: stackoverflow.com/questions/2624667/…
Майк Данлавей,
В настоящее время вы можете выполнять хорошее профилирование внутри Eclipse. Забудьте об автономном / ручном запуске TraceView и т. Д. Я надеюсь написать об этом статью в блоге с более подробной информацией. Напишите мне, если Вам нужны подробности.
KarolDepka
2
Вы предлагаете что-нибудь получше, чем TraceView или DDMS. Что это такое?
Пери Хартман

Ответы:

37

Вы можете использовать Traceview. Далеко от идеала, но работает. В этой статье описывается, как его использовать.

цемент
источник
2
Когда я запускаю это, он говорит, что версия командной строки устарела, а затем закрывается. Какой новый метод?
gonzobrains 09
18

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

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


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

Shahul3D
источник
4
Документы Android о DDMS: developer.android.com/tools/debugging/ddms.html
sulai
11

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

Если вы разрабатываете приложения для 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 .

Дэвид
источник