2009-09-22 15 views
8

Ich habe gehört, dass es eine gute Idee ist, "kompilieren für den Daumen" in den Einstellungen eines iPhone-Ziels zu deaktivieren, um die Leistung zu erhöhen. Ich habe Probleme, diese Einstellung zu finden. Da ich es in meinem aktuellen Projekt nicht finden konnte, beschloss ich, ein neues zu erstellen (wo ich es finden und einstellen konnte) und meine Dateien dorthin zu kopieren (und auch alle Bibliotheken, die ich gleichzeitig benutze, zu aktualisieren)).iPhone kompilieren für den Daumen

Aber jetzt scheint es, als ob diese Einstellung auch von diesem neuen Projekt verschwunden ist. Egal, welches SDK ich verwende, Simulator oder Gerät, die Einstellung wird nicht in den Zieleinstellungen angezeigt! Ich habe jedoch plötzlich eine Variable namens GCC_THUMB_SUPPORT unter der Kategorie "Benutzerdefiniert" plötzlich. Was ist das?

Ich habe versucht, ein neues Ziel zu machen, aber die Einstellung wird auch nicht in diesem angezeigt (nicht einmal GCC_THUMB_SUPPORT).

Antwort

14

GCC_THUMB_SUPPORT ist die richtige Variable. Setzen Sie es einfach auf NEIN, um die THUMB-Code-Generierung zu deaktivieren.
Eine allgemeine Regel von THUMB ist, es zu deaktivieren, wenn Ihr Code Gleitkomma schwer ist :)
Mehr darüber .

Update:
Der Rat für die DAUMEN zu kompilieren Befehl is no longer valid gesetzt (eigentlich seit dem iPhone 3GS).

+2

+1 für die Regel gilt: D – stigi

+0

Ist das noch relevant wie von iPhone 4, 4 g & 5? – Kyle

+0

@weichsel Wie wäre es mit Klängen? Was nun in xcode verwendet wird ... ist das Thumb Mode-Ding noch relevant? – lppier

2

"Übersetzen für Thumb" sollte unter sein Ziel/Get Info/GCC 4.2 - Codegenerierung. Wenn es nicht vorhanden ist (ich wäre überrascht, wenn dies nicht der Fall ist), legen Sie die benutzerdefinierte Variable fest.

Denken Sie daran, dass dies die Leistung nur unter einer begrenzten Anzahl von Umständen verbessert, die Sie verstehen sollten, bevor Sie damit herumhantieren.

3

Ich habe festgestellt, dass die Einstellungen des Compilers ("GCC 4.2 - Code Generation", "GCC 4.2 - Sprache", usw.) nur im Konfigurationsfenster Zielinfo-Build angezeigt werden, wenn Active SDK auf Device gesetzt ist. und die Kategorie "Benutzerdefiniert" wird nur angezeigt, wenn das Active SDK Simulator ist.

Und ja, Deaktivieren von Thumb Compilierung kann eine große Hilfe zur Leistung sein, wenn Sie mit vielen Fließkomma-Mathematik (z. B. Gleitkomma-Audio-Verarbeitung) beschäftigen. Obwohl es natürlich keine magische Allzweck-Beschleunigung ist (und Thumb-kompilierter Code kann in manchen Situationen schneller laufen), wird Thumb wahrscheinlich nur dann nützlich sein, wenn Ihr Code diesen Engpass aufweist.

2

Der Standard-Befehlssatz für ARM ist 4 Byte. Mit "Kompilieren für Thumb" kann der Compiler 2-Byte-Anweisungen verwenden. Dies führt zu einer viel kleineren Bibliothek, aber auch zu einer langsameren (etwas umstritten). Kritischer gesehen gibt es Probleme beim Ausführen unter ARMv6. In unserem Fall konnten wir keine stabile Ausgabe von Monotouch generieren (behoben in MT4.0 Alpha). In Xcode finden Sie die Einstellung, indem Sie auf Ihr Ziel klicken und unter Erstellen nach "Daumen" suchen. Mine ist unter GCC 4.2 - Code Generation, aber manchmal ist es unter LVVM GCC 4.2.

Compile for Thumb