iPhone скомпилировать для большого пальца - PullRequest
8 голосов
/ 22 сентября 2009

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

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

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

Ответы [ 4 ]

14 голосов
/ 22 сентября 2009

GCC_THUMB_SUPPORT - правильная переменная. Просто установите NO, чтобы отключить генерацию кода THUMB.
Общее правило THUMB - отключать его, если ваш код имеет большую плотность:)
Подробнее об этом здесь .

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

3 голосов
/ 02 ноября 2009

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

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

2 голосов
/ 21 марта 2011

Стандартный набор команд для ARM составляет 4 байта. Используя «Compile for Thumb», компилятор может использовать 2-байтовые инструкции. Это приводит к гораздо меньшей библиотеки, но и более медленный (несколько спорно). Более того, есть проблемы с запуском под ARMv6. В нашем случае мы не могли генерировать стабильный вывод из Monotouch (исправлено в MT4.0 alpha). В XCode вы можете найти настройку, щелкнув по вашей цели, и в разделе «Сборка», и в поиске «большой палец». Шахта находится под GCC 4.2 - Генерация кода, но иногда она находится под LVVM GCC 4.2.

Compile for Thumb

2 голосов
/ 22 сентября 2009

«Compile for Thumb» должен быть ниже Target / Get Info / GCC 4.2 - Генерация кода . Если его там нет (я бы удивился, если бы его нет), установите пользовательскую переменную.

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

...