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


93

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

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


Я не знаком с 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


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 .


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.