Различия между компиляцией для i386 по сравнению с x86_64 в XCode?

Каковы различия между компиляцией приложения для Mac в XCode с Активным набором Архитектуры к i386 по сравнению с x86_64 (выбранный в выпадающем, наверху оставленном главного окна)? В настройках Build для проекта опции Architecture являются Стандартными (32/64-bit Universal), 32-разрядная Universal и 64-разрядный Intel. Практически, что они означают и как каждый решает?

Предположите, что каждый нацелен на OS X 10.5 и выше. Я вижу в Мониторе Действия, что компиляция для x86_64 приводит к приложению, которое использует больше памяти, чем один скомпилированный для i386. Каково преимущество? Я знаю 64-разрядный, "будущее", но, учитывая более высокое использование памяти, имело бы смысл выбирать 32-разрядный когда-нибудь?

7
задан sam 16 July 2010 в 16:17
поделиться

2 ответа

32/64-разрядный универсальный - i386, x86_64, ppc

32-разрядный универсальный - i386, ppc

64-разрядный Intel - 64-разрядный только Intel

ppc64 больше не поддерживается.


Бинарные файлы x86_64 быстрее по ряду причин; более быстрый ABI, больше регистров, на многих (на большинстве и на всех новых машинах) машинах ядро ​​64-битное, а вызовы ядра быстрее и т. д. и т. д.

Хотя 64-битные напрямую связаны с небольшими накладными расходами памяти, Как правило, в отношении того, насколько тяжелы указатели в структурах данных вашего приложения, имейте в виду, что 32-битные приложения перетаскиваются в 32-битные версии всех фреймворков. Если у вас единственное 32-битное приложение в системе, оно потребует огромных накладных расходов по сравнению с 64-битной версией.

64-битные приложения также используют новейший и лучший Objective-C ABI; синтезированные ivars, non-fragile ivars, унифицированные исключения C ++ / ObjC, блоки @try с нулевой стоимостью и т. д., а также ряд оптимизаций, которые также возможны только в 64-битной версии.

8
ответ дан 7 December 2019 в 05:16
поделиться

Если у вас нет причин для компиляции для x86_64, я рекомендую просто компилировать для i386 (и PPC, если вы это поддерживаете). Прочтите Позиция Apple по этому поводу:

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

0
ответ дан 7 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: