iPhone GCC / LLVM GCC или LLVM? - PullRequest
       1

iPhone GCC / LLVM GCC или LLVM?

20 голосов
/ 18 сентября 2010

Я спрашиваю экспертов здесь ...

Кто-нибудь провел тест производительности, какой компилятор лучше всего подходит для приложений iPhone?

Так как у нас есть выбор между:

  • GCC 4.2
  • LLVM GCC 4.2
  • Компилятор LLVM 1.5

Мне интересно, какой из 3-х предлагает лучшую производительность ...

Я сделал несколько быстрых тестов сам, но не нашел большой разницы?

Какой компилятор вы используете?

Ответы [ 5 ]

11 голосов
/ 18 сентября 2010

Если вы посмотрите сессионное видео WWDC 2010 300, «Состояние инструментов разработчика», вы увидите, что Apple сообщает о значительном увеличении производительности приложений, созданных с помощью компилятора LLVM через GCC (до 60% быстрее в определенных случаях). Есть дополнительные улучшения, которые могут быть сделаны с помощью синтаксического анализатора Clang с компилятором LLVM. Посмотрите сессию 312 - «Что нового в компиляторе LLVM», чтобы узнать больше об этом, а также сеансы на LLVM из WWDC 2009, если они у вас есть.

Я наблюдал ускорение на 20% от GCC к LLVM 1.5 в неофициальном тесте в одном из моих приложений, но это не было строгим тестом, так что посчитайте это только случайным свидетельством.

Я рекомендую использовать Clang + LLVM (LLVM Compiler 1.5), если вы можете для более быстрого времени сборки, более производительных приложений и гораздо большего количества ошибок компиляции. Если вы используете код C ++ или что-то еще, что синтаксический анализатор Clang не может обрабатывать прямо сейчас, используйте LLVM GCC, чтобы по-прежнему получать преимущества в производительности вашего скомпилированного приложения. Переходите в GCC, только если по какой-то причине это не удается. Это простой переход в настройках сборки, чтобы получить даже небольшую дополнительную производительность бесплатно в вашем конечном приложении.

LLVM Compiler 2.0, поставляемый с Xcode 4, имеет полную поддержку C ++ и обещает дополнительную оптимизацию для скомпилированных приложений, а также больше ускорений во время компиляции. Xcode 4 даже использует Clang в качестве механизма подсветки синтаксиса / исправления кода в IDE. Ясно, в каком направлении Apple движется со своими компиляторами.

3 голосов
/ 18 сентября 2010

Я не знаю о производительности для iPhone, но в других тестах Clang обычно компилируется быстрее, но генерирует более медленный код, чем GCC. Clang также имеет лучшие сообщения об ошибках, чем GCC. Таким образом, может быть лучше использовать Clang в разработке и перейти на GCC для окончательных сборок. Если вы выберете такой подход, убедитесь, что у вас есть хороший цикл QA или система сборки, которая также будет собирать и тестировать сборку GCC, чтобы в конце не было никаких неприятных сюрпризов, связанных с компилятором.

Поддержка C ++ в Clang немного отстает от поддержки GCC (и больше кодов C ++ было протестировано и настроено на причуды GCC, чем Clang), поэтому, если вам нужно использовать много C ++, лучше использовать GCC. 1005 *

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

2 голосов
/ 26 октября 2010

LLVM GCC 4.2 - это то, что я использую.

Clang недостаточно хорошо справляется с C ++, и в настоящее время он находится в стадии разработки. Это очень многообещающий инструментарий, но он пока недостаточно стабилен для производства (по моему опыту).

Apple определенно инвестирует в Clang в качестве своего будущего компилятора, но это не тривиальный проект. К сожалению, это ставит многих из нас в странное место, используя один относительно старый компилятор и / или один очень очень новый (угадайте, сколько лет пройдет, прежде чем я смогу начать использовать функции c ++ 0x в своих базах кода).

Я использовал внешний интерфейс GCC с бэкэндом LLVM с моими базами кода, так как он был доступен (по крайней мере, во время тестирования). Это было общедоступно в течение многих лет, и довольно стабильно. Я обнаружил, что проход LLVM производит меньшие, более быстрые исполняемые файлы по сравнению с одним GCC (хотя я делаю больше работ, ориентируясь на OS X, чем на iOS). Честно говоря, я не могу скомпилировать достаточно кода с одним Clang, чтобы рекомендовать его (плюс, у меня много C ++).

Я нашел комбо GCC + LLVM надежным. Если надежность является вашей главной задачей: начните с GCC, регулярно тестируйте + LLVM в процессе разработки и регулярно компилируйте и тестируйте с Clang в каждом выпуске Clang, пока вы не будете удовлетворены им. GCC + LLVM обычно можно использовать для современных сборок.

Если вам важна скорость, начните с GCC + LLVM и регулярно тестируйте с Clang (если это вариант для вас - это не для меня - слишком много с ++).

Относительно синтаксического анализа / лексирования / генерации Clang: Clang стремится максимально соответствовать стандартам. У них все хорошо, но есть много функций, которые являются новыми или отсутствуют, поэтому я советую вам быть осторожнее, особенно с C ++.

Я считаю, что Apple сделала свой любимый компилятор будущего очевидным, так что ... не ждите слишком долго, чтобы протестировать с Clang.

1 голос
/ 04 октября 2013

Я хотел бы представить вам эту удивительную статью Опции компилятора в Xcode - GCC или LLVM?

enter image description here

Вы не хотите пропустить ни одного слова, особенно раздел Какой выбрать?

0 голосов
/ 18 сентября 2010

С Clang 1.5 интерфейс C ++ не самый лучший, и я вообще рекомендую не использовать его, если вам приходится иметь дело с любым кодом C ++ (включая код Objective-C ++).Кроме того, у меня возникли некоторые проблемы со слабым связыванием при использовании clang, поэтому для меня он не готов к работе, если вам приходится иметь дело с одним из двух вышеупомянутых случаев.реальное влияние на производительность между ними, хотя ошибки и предупреждения clang НАМНОГО полезнее, чем gcc.

Пища для размышлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...