Muszę dowiedzieć się, gdzie są wąskie gardła w mojej aplikacji na Androida.
Z jakich narzędzi lub technik profilowania mogę skorzystać?
Muszę dowiedzieć się, gdzie są wąskie gardła w mojej aplikacji na Androida.
Z jakich narzędzi lub technik profilowania mogę skorzystać?
Odpowiedzi:
Możesz użyć Traceview. Daleko mu do ideału, ale działa. W tym artykule opisano, jak z niego korzystać.
DDMS jest najlepszy dla Androida. Domyślnie jest dołączany do wtyczki ADT.
Ten dokument ze szczegółowym przykładem powinien pomóc w radzeniu sobie z DDMS.
Do analizy pamięci wypróbuj Eclipse MAT
To zależy, co zamierzasz przetestować.
Jeśli tworzysz aplikacje na Androida, powinieneś wypróbować klasę TimingLogger. Zapoznaj się z tym artykułem opisującym użycie klasy pomocniczej TimingLogger.
Bardzo dobrym narzędziem jest JMeter i jest też wtyczka dla Androida .
jeśli nie chcesz używać zewnętrznych narzędzi, ale bardzo standardowy sposób, aby mierzyć upływający czas, musisz użyć System.nanoTime (). Nie powinieneś używać currentTimeMillis, ponieważ mierzy czas zegara ściennego, a ponieważ żaden zegar komputera nie jest doskonały (wszystkie czasami wymagają korekty), istnieje proces, który działa i nieustannie wprowadza niewielkie poprawki do zegara systemowego. Nie wspominając o korekcie sekundy przestępnej.
Chociaż currentTimeMillis jest często używany, pomiar upływającego czasu i synchronizacji jest nadal nieprawidłowy. W każdym razie, ponieważ wywołanie zajmuje trochę czasu, nie należy oczekiwać prawidłowego mierzenia bardzo małych odstępów czasu. Ale to nie powinno stanowić problemu przy pracy z Androidem.
Pokażę Ci przykład:
long startTime = System.nanoTime();
// run/call the method
long endTime = System.nanoTime();
long diff = endTime - startTime ;
System.out.println("Elapsed milliseconds: " + diff /1000000);
Możesz również zajrzeć do tej bezpłatnej biblioteki: http://jetm.void.fm/ .
Możesz również znaleźć samouczek dotyczący JMeter .
Kolejnym narzędziem polecanym w http://developer.android.com/training/articles/perf-tips.html jest Caliper: https://code.google.com/p/caliper/ . (Nie korzystałem z niego, więc niewiele o tym wiem.)