Zamierzam zinterpretować pytanie jako "Czy czas uruchamiania mojej aplikacji jest wystarczająco szybki. Jak mogę sprawdzić, czy zrobiłem wszystko, co mogłem zrobić?
Czas uruchamiania jest w dużej mierze fałszywym wskaźnikiem, ponieważ różni się on w zależności od urządzenia i pamięci ROM. Domyślam się, że najprawdopodobniej jesteś zainteresowany tym, ile czasu zajmuje twój kod i co potencjalnie blokuje główny wątek.
Znalazłem najbardziej skuteczny sposób na to, aby użyć Traceview na początku aplikacji, a następnie sprawdzanie, jak długo trwa metoda do wykonania i czy są jakieś przerwy w głównym wątku.
Rozpocznij śledzenie:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Debug.startMethodTracing("startup");
}
}
Zatrzymaj śledzenie:
@Override
public void onViewCreated(final View view, final Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Debug.stopMethodTracing();
}
Po ślad zostały zebrane, powinieneś być w stanie zobaczyć niczego, co wywiera znaczący wpływ na czas uruchamiania. W moim przypadku, widzianym poniżej, istniała duża luka w wątku UI, w którym jest blokowana.
Okazało się, że zarówno Crashlytics i Coremetrics były wymagające wywołania randomUUID()
które następnie są zsynchronizowane i nici blokujące główny gwint. Rozwiązaniem było jedynie zakręcenie nowego wątku w celu zainicjowania kodu Coremetrics.
Jest to coś, czego bym nie zauważył w inny sposób, mierząc tylko czas uruchamiania, ale faktycznie przyspieszył "czas startowy" aplikacji o kilkaset milisekund.
Oto kolejny snapshot po wydzielenia oddzielnego wątku dla Coremetrics inicjalizacji:
"Przez czas uruchamiania mam na myśli różnicę między 2. a 3." To byłby 1. Albo może -1. :-) Czy poważnie, czy budujesz swoje własne oprogramowanie, czy też próbujesz je zdobyć ze sklepu? Czy jest to rzecz rozwojowa lub zapytanie o środowisko produkcyjne? – CommonsWare
Chcę to śledzić czas uruchamiania na różnych urządzeniach i wersjach Androida podczas rozwoju. Innym powodem jest to, że niektórzy użytkownicy skarżyli się, że uruchomienie aplikacji stało się powolne od czasu ostatniej aktualizacji, więc byłoby miło zobaczyć liczby. Oczywiście mógłbym po prostu zmierzyć czas, od kiedy nazwa onCreate() została wywołana ... ale znając rzeczywisty czas startowy po prostu czuje się lepiej :) Pozwala mi to również powiedzieć "spowalnia to czas uruchamiania tylko o 5%", więc nie jest to Wielka rzecz. – fhucho