Разница между LLVM, GCC 4.2 и компилятором Apple LLVM 3.1

Каковы основные различия между LLVM GCC 4.2 и компилятором Apple LLVM 3.1?

Я новичок в компиляторах, поэтому любая помощь приветствуется. Также меня особенно интересует, как два компилятора могут повлиять на производительность игры.

Ответ 1

Разница заключается в технологии и скорости.

CLANG все еще был молод и искажен, когда Apple начала переход от компилятора GCC и инструментальной цепочки, поэтому LLVM был создан как back-end для GCC, чтобы облегчить его возможную замену. Таким образом, код вошел и был скомпилирован GCC в некоторую промежуточную форму, но был отправлен в LLVM для предоставления окончательного машинного кода и упаковки.

В конце концов, LLVM и особенно CLANG были достаточно зрелыми, чтобы полностью заменить GCC, что обеспечило потрясающее ускорение для компиляции и резкое повышение качества вывода машинного кода (хотя многие утверждают, что GCC по-прежнему производит код лучшего качества за счет скорости).

Но для решения вашей проблемы с производительностью игры: в то время как CLANG может обеспечить "лучший" опыт компиляции, производительность не является задачей компилятора. Хотя оптимизация и упрощение являются частью процесса компиляции, тот факт, что люди все еще пишут лагги игры или производят бесконечные петли, которые тратят в стек, показывают, что производительность - это ваша работа. Компилятор может сделать только так много, остальное зависит от вас. Тип или поставщик компилятора также не сделает или не сломает вашу игру или не повлияет на частоту кадров или удобство использования. Вы должны прочитать о более низких уровнях оптимизации для архитектуры ARM. Несколько статей о NEON и инструментах помогут вам намного лучше, чем узнать о "оптимизации для компилятор".

Ответ 2

Другая разница: Clang поддерживает большинство С++ 11. GCC 4.2-Apple не поддерживает С++ 11.