2009-09-25 9 views
6

Czy są dostępne artykuły online, w których można znaleźć wskazówki dotyczące poprawy wydajności aplikacji na telefon iPhone. Czytałem dokumenty Apple dotyczące zarządzania pamięcią i cykli procesora, ale nie są one zbyt pomocne.Ustawienia kompilacji XCode dla wydajności - aplikacje dla iPhone'a

Czy ktoś może zaproponować kilka ustawień XCode, które mogłyby poprawić wydajność aplikacji (wersja wydania)?

Dzięki Dzbanki

+0

Gdzie dokładnie widzisz skuteczność działania? – pzearfoss

Odpowiedz

8

Krótki pomiaru i optymalizacji, poziom optymalizacji kompilator tylko o jedyną rzeczą, która wpłynie na wydajność aplikacji. Zazwyczaj potrzebujesz poziomu optymalizacji -Os; to jest zoptymalizowany kod, ale zoptymalizowany pod względem wielkości. Ponieważ pamięć telefonu iPhone jest ograniczona, zmniejszenie rozmiaru kodu jest przydatne.

Poza tym, będziesz musiał zmierzyć wydajność swojej aplikacji i odpowiednio zareagować. W Instrumentach jest wiele narzędzi, które pomogą ci w tym zadaniu. Narzędzia są naprawdę bardzo dobre, gdy je odkryjesz.

Biorąc pod uwagę, że jeszcze niczego nie zmierzyłeś (co jest dobre - spraw, aby działało, rób to dobrze, szybko), może występować niski poziom wiszący owoców. Czy przerysowujesz coś zbyt często? Czy zautomatyzowane zdarzenie czasowe jest uruchamiane zbyt szybko? etc ... Po prostu nie wpadnij w pułapkę przedwczesnej optymalizacji; Potrzeba zmierzenia się z reakcją & jest najważniejsza dla udanej optymalizacji.

Należy również pamiętać, że można symulować gruboziarniste zoptymalizowanie za pomocą symulatora, ale naprawdę trzeba wykonać analizę aplikacji uruchomionej na urządzeniu, aby wykonać końcową optymalizację.


(1) Wygląda na to, że zapytanie o bazę danych jest naprawdę powolne. Nie znając schematu, itp., Trudno jest stwierdzić, czy tak jest naprawdę.

(2) Podczas analizy wydajności i czasu zużywanego przez funkcję w nieznanej bibliotece spójrz na stos i zobacz, co wywołuje ta biblioteka, aby dowiedzieć się, dlaczego Twoja aplikacja powoduje spowolnienie wydajności.

+0

Dzięki za komentarze! Moja aplikacja to w zasadzie aplikacja UIKit, która zadaje graczom kilka pytań, a następnie dowie się ich zgodności. Tak więc ma kilka elementów sterujących UI, takich jak UIButtons, UIPickerControl, UITextView itp. Gdy użytkownik wybierze przycisk, aplikacja reaguje na 2-3 sekundy, mimo że po prostu pobiera nowe pytanie z bazy danych, które nie zająć dużo czasu. Wypróbowałem różne narzędzia, takie jak Shark i Instruments, i znalazłem tam, gdzie cykle procesora są marnowane i wszystkie znajdują się w nieznanej bibliotece. Dzięki – Jugs

2

W zasadzie, co powiedział bbum. Uzyskaj aktualne dane i stamtąd. To powiedziawszy, istnieje kilka flag kompilacji, które mogą mieć znaczący efekt:

  • Upewnij się, że nie kompilujesz w -O0. Jak zauważył bbum, -Os jest prawdopodobnie tym, czego chcesz.
  • Jeśli wykonujesz wiele obliczeń zmiennoprzecinkowych, upewnij się, że "Kompilacja dla Thumb" (-mthumb) nie jest ustawiona podczas budowania dla ARMv6. Instrukcja obsługi kciuka w ARMv6 nie zawiera instrukcji zmiennoprzecinkowych, więc naciśnięcie podkładki dla każdej operacji zmiennoprzecinkowej, której używasz. Często jest to równoważone przez zmniejszenie rozmiaru kodu, ale jeśli masz dużo zmiennoprzecinkowej, może to być zagrożenie dla wydajności. Zauważ, że możesz zbudować część projektu dla kciuka i części z nim wyłączonym. Zwróć też uwagę, że zestaw instrukcji thumb2 na ARMv7 obsługuje zmiennoprzecinkowe.
+0

Co to jest -O0? Google nic nie wyświetla – quantumpotato

2

Najlepszym sposobem na poprawę wydajności iPhone'a jest poprawa wydajności aplikacji, a nie tylko dzięki optymalizacji kompilatora, ale dzięki lepszym algorytmom.

Zasadniczo optymalizacje kompilatorów mogą poprawić wydajność o jedną lub dwie cyfry. Optymalizacja kodu przy użyciu lepszych algorytmów, buforowania, ponownej architektury itp. Może przynieść trzykrotne zwiększenie procentowe.

Nigdy nie znalazłem ustawienia kompilatora, które znacząco poprawiłoby wydajność mojej aplikacji. Twoje mile mogą się różnić.

Powiązane problemy