Использование GCC 4.2 для компиляции файлов * .mm очень медленное, но LLVM проделал очень хорошую работу, какая разница? - PullRequest
1 голос
/ 22 ноября 2011

Мой проект представляет собой obj-c и C ++ hybirid, заполненный как * .m, так и * .mm.

При компиляции, если выбрать GCC 4.2, скорость компиляции исходных файлов * .m obj-c очень высокая, но * .mm очень очень медленная, но LLVM 2.0 может выполнять очень хорошую работу, она очень быстрая дляи * .m и * .mm.

Мой вопрос: есть ли разница между LLVM и GCC 4.2 при компиляции файлов * .mm?почему GCC 3.2 такой медленный?

Любая идея или обсуждение будут оценены, спасибо заранее.

ENV: XCODE 4.0.1

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

Есть ли разница между LLVM и GCC 4.2 во время компиляции * .mm файлы? почему GCC 3.2 такой медленный?

Да; они совершенно разные компиляторы; по сути, все в этом процессе отличается, хотя фактический эффект похож (вы получаете исполняемый файл, который точно воспроизводит семантику вашего исходного кода) Одной из основных целей LLVM было повышение скорости компиляции. Это ожидается.

Если вы хотите прочитать о внутренностях LLVM, вот вам разумное место для начала.

0 голосов
/ 22 ноября 2011

GCC действительно старый, но все еще прогрессирует. Я предлагаю вам сравнить последние версии, поэтому используйте GCC 4.6 (против LLVM 2.9 ). Вашей 4.2 версии GCC уже несколько лет, и с тех пор в GCC был достигнут большой прогресс.

0 голосов
/ 22 ноября 2011

LLVM - это гораздо более новый компилятор, разработанный и написанный за последние 5 лет, в то время как коллекции компиляторов gnu (gcc) более 20 лет, и она очень раздутая, но может работать на многих языках.В очень редких случаях оптимизация gcc лучше, но в целом вы должны просто использовать LLVM.

...