Як я можу профілювати програму Android? [зачинено]


93

Мені потрібно знайти місця, де є вузькі місця в моєму додатку для Android.

Які інструменти чи методи профілювання я можу використовувати?


Я не знайомий з Android. Чи можете ви запустити додаток під налагоджувачем, який ви можете перервати? Якщо так, цей метод працює: stackoverflow.com/questions/375913/…
Майк Данлаве

Ммм, цікаво. Трохи трудомісткі, але потенційно корисні для виявлення більш очевидних проблем з продуктивністю. Дякую.
teedyay

Я розумію, як ви могли так подумати: stackoverflow.com/questions/2624667/…
Майк Данлаве

На сьогоднішній день ви можете зробити приємне профілювання Eclipse. Забудьте про автономний / ручний запуск TraceView і т.д. Пінг мені, якщо вам потрібно більше деталей.
KarolDepka

2
Ви вважаєте, що є щось краще, ніж TraceView або DDMS. Що це?
Пері Хартман

Відповіді:


37

Ви можете використовувати Traceview. Це далеко не ідеально, але працює. У цій статті описано, як ним користуватися.


2
Коли я запускаю це, він каже, що версія командного рядка застаріла, а потім вона закривається. Який новий метод?
gonzobrains

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.