Вопрос

Я слышал, что было бы неплохо отключить "compile for thumb" в настройках целевого устройства iPhone, чтобы повысить производительность.Однако у меня возникли некоторые проблемы с поиском этой настройки.Поскольку я не смог найти его в своем текущем проекте, я решил создать новый (где я мог бы найти и установить его) и скопировать в него свои файлы (а также обновить все библиотеки, которые я использую одновременно).

Но теперь, похоже, что эта настройка исчезла и из этого нового проекта.Независимо от того, какой SDK я выберу, симулятор или устройство, этот параметр не будет отображаться в целевых настройках!Однако, похоже, у меня все еще внезапно появилась переменная с именем GCC_THUMB_SUPPORT в категории "Определяемые пользователем".Что это такое?

Я попытался создать новую цель, но в ней настройка также не будет отображаться (даже GCC_THUMB_SUPPORT).

Это было полезно?

Решение

GCC_THUMB_SUPPORT - это правильная переменная.Просто установите для него значение NO, чтобы отключить генерацию THUMB-кода.
Общее ЭМПИРИЧЕСКОЕ правило заключается в том, чтобы отключить его, если ваш код содержит большое количество символов с плавающей запятой :)
Подробнее об этом здесь.

Обновить:
Совет по компиляции для набора команд THUMB больше не действителен (на самом деле, начиная с iPhone 3GS).

Другие советы

Я обнаружил, что настройки компилятора ("GCC 4.2 - Генерация кода", "GCC 4.2 - Язык" и т.д.) Отображаются в окне настроек сборки Target info только тогда, когда для активного SDK установлено значение Device, а категория "Определяемый пользователем" отображается только тогда, когда активным SDK является Simulator.

И да, отключение Thumb-компиляции может значительно повысить производительность, если вы имеете дело с большим количеством математических операций с плавающей запятой (напримеробработка звука с плавающей запятой).Хотя это, конечно, не универсальное волшебное ускорение (и предположительно, скомпилированный с помощью Thumb код в некоторых ситуациях может работать быстрее), так что вы, вероятно, сочтете отключение Thumb полезным только в том случае, если в вашем коде есть такое узкое место.

"Компиляция для Thumb" следует находиться под Цель / Получение информации / GCC 4.2 - Генерация кода.Если его там нет (я был бы удивлен, если бы это было не так), установите пользовательскую переменную.

Имейте в виду, что это повышает производительность только при узком наборе обстоятельств, которые вы должны понять, прежде чем возиться с этим.

Стандартный набор команд для ARM составляет 4 байта.Используя "Compile for Thumb", компилятор может использовать 2-байтовые инструкции.В результате получается гораздо меньшая библиотека, но и более медленная (что несколько спорно).Что еще более важно, существуют проблемы с запуском под ARMv6.В нашем случае мы не смогли сгенерировать стабильный вывод из Monotouch (исправлено в MT4.0 alpha).В Xcode вы можете найти настройку, нажав на свою цель, заглянув в раздел Build и выполнив поиск "thumb".Мой работает под GCC 4.2 - Генерация кода, но иногда он работает под LVVM GCC 4.2.

Compile for Thumb

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top