2009-09-22 18 views
8

Słyszałem, że może być dobrym pomysłem wyłączenie "kompilacji dla kciuka" w ustawieniach celu iPhone'a w celu zwiększenia wydajności. Mam jednak problem ze znalezieniem tego ustawienia. Ponieważ nie mogłem go znaleźć w moim bieżącym projekcie, zdecydowałem się zrobić nowy (gdzie mogłem go znaleźć i ustawić) i skopiować do niego moje pliki (a także zaktualizować wszystkie biblioteki, których używam w tym samym czasie).Kompilacja iPhone'a dla kciuka

Ale teraz wygląda na to, że to ustawienie również zniknęło z tego nowego projektu. Bez względu na to, jaki SDK wybiorę, symulator lub urządzenie, ustawienie nie pojawi się w ustawieniach docelowych! Wydaje mi się jednak, że zmienna GCC_THUMB_SUPPORT wciąż ma nagle kategorię "zdefiniowaną przez użytkownika". Co to jest?

Próbowałem utworzyć nowy cel, ale ustawienie również się nie pojawi (nawet GCC_THUMB_SUPPORT).

Odpowiedz

14

GCC_THUMB_SUPPORT jest właściwą zmienną. Po prostu ustaw na NIE, aby wyłączyć generowanie kodu THUMB.
Ogólna zasada THUMB to, aby ją wyłączyć, jeśli twój kod jest zmiennoprzecinkowy ciężki :)
Więcej o tym here.

Aktualizacja:
Porady skompilować dla kciuka Instruction Set is no longer valid (faktycznie od iPhone 3GS).

+2

+1 dla zasada: D – stigi

+0

Czy to nadal aktualne jak iPhone 4, 4g i 5? – Kyle

+0

@weichsel jak o clang? Który jest używany w Xcode teraz ... jest rzeczą kciuka, która wciąż ma znaczenie? – lppier

2

"Kompilacja dla kciuka" powinny być pod docelowa/Get Info/GCC 4.2 - Code Generation. Jeśli go tam nie ma (zdziwiłbym się, gdyby tak nie było), ustaw zmienną zdefiniowaną przez użytkownika.

Należy pamiętać, że poprawia to wydajność tylko w wąskim zakresie okoliczności, które należy zrozumieć, zanim zacznie się z nim bawić.

3

Zauważyłem, że ustawienia kompilatora ("GCC 4.2 - Generowanie kodu", "GCC 4.2 - Język" itp.) Pojawiają się tylko w oknie Ustawienia budowania informacji o celu, gdy aktywny zestaw SDK jest ustawiony na Urządzenie - a kategoria "zdefiniowana przez użytkownika" pojawia się tylko wtedy, gdy aktywny SDK jest symulatorem.

I tak, wyłączając Kciuk kompilacja może być bardzo pomocne do wykonania, jeśli masz do czynienia z dużą ilością matematyki zmiennoprzecinkowej (np zmiennoprzecinkowe przetwarzanie audio). Chociaż to nie jest, oczywiście, prędkości-up uniwersalny magiczne (i podobno Thumb skompilowany kod może działać szybciej w niektórych sytuacjach), więc prawdopodobnie będziesz znaleźć tylko wyłączając kciuk użyteczny jeśli kod ma tego rodzaju wąskie gardło.

2

Standardowy zestaw instrukcji dla ARM to 4-bajty. Za pomocą "Kompilacji dla Kciuka" kompilator może używać instrukcji 2-bajtowych. Powoduje to znacznie mniejszą bibliotekę, ale także wolniejszą (nieco dyskusyjną). Bardziej krytycznie, są problemy z działaniem pod ARMv6. W naszym przypadku nie mogliśmy wygenerować stabilnego wyjścia z Monotouch (fix w MT4.0 alpha). W Xcode możesz znaleźć ustawienie klikając na cel i patrząc pod Build i wyszukując "thumb". Mój jest pod GCC 4.2 - Generowanie kodu, ale czasami jest pod GV 4.2 LVVM.

Compile for Thumb