Создает ли лучший / более новый компилятор C или C ++ более производительный скомпилированный код? Или они просто работают быстрее / лучше при компиляции?

328
shadowtalker

Я сам не программист на C или C ++, но я часто использую программное обеспечение, которое должно быть скомпилировано или зависит от компилятора, например, некоторые пакеты R.

Будет ли это программное обеспечение работать лучше, если я использую более новый / лучший компилятор? Например, сейчас я использую системную версию Clang для Mac OS X, и вместо этого было предложено использовать более позднюю версию. Это всего лишь предложение сэкономить мне время и память во время компиляции? Или это действительно произведет более эффективное скомпилированное программное обеспечение?

2
Для человека, голосующего за закрытие, поскольку "принадлежит на SO": это не вопрос, связанный с развитием; это вопрос с точки зрения пользователя (примечание: существует множество ОС и пакетов программного обеспечения, которые ожидают, что пользователь скомпилирует из исходного кода). Это было бы не по теме на SO, а * is * по теме на SU; близкие причины гораздо более нюансированы, чем «он упомянул компиляцию!». Bob 9 лет назад 1
@ Боб спасибо. Я изначально написал это на StackOverflow, а затем решил вместо этого опубликовать это здесь shadowtalker 9 лет назад 1
@ fixer1234 Я специально добавил C и C ++ в заголовок и теги shadowtalker 9 лет назад 0
@ fixer1234 вы читаете слишком далеко в вопросе. Если ответ "нет хорошего ответа", пусть будет так shadowtalker 9 лет назад 0

1 ответ на вопрос

3
Ramhound

Будет ли это программное обеспечение работать лучше, если я использую более новый / лучший компилятор?

Это полностью зависит от того, была ли выполнена работа с функцией оптимизации кода компилятора в данном выпуске.

Например, сейчас я использую системную версию Clang для Mac OS X, и вместо этого было предложено использовать более позднюю версию.

Вы должны придерживаться той же версии компилятора, которая, как вы знаете, работает, если вам не нужна функция, которая существует только в более поздней версии. Если вы не знаете, что более поздняя версия делает что-то более эффективное, вы не должны обновлять.

Это всего лишь предложение сэкономить мне время и память во время компиляции?

Честно говоря, предложение на 100% основано на мнении. Если вы доверяете человеку, предоставившему это предложение, вы должны принять его.

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

Хороший ответ, но было бы полезно упомянуть, что хотя обновление по внеполосным каналам без уважительной причины часто является плохой идеей, вы все равно должны выполнять обновления, являющиеся частью официального выпуска ОС. Кроме того, иногда более новые выпуски компилятора фактически вводят регрессии (они могут выполнять «худшую» работу по оптимизации определенного кода, чем более старая версия). Bob 9 лет назад 0
То, что я вижу здесь, является предварительным «нет». Или «возможно, но, возможно, недостаточно, чтобы иметь значение, и вы можете что-то сломать в процессе». Точная? shadowtalker 9 лет назад 0
@Ramhound: в зависимости от вопроса, OP выполняет компиляцию. fixer1234 9 лет назад 0
@ Беги, у тебя это задом наперед. Обычно я не компилирую свой собственный код (R - интерпретируемый язык; я также использую Python), но мне иногда требуется создавать дополнительные пакеты из исходного кода, которые должны быть скомпилированы перед тем, как я смогу их использовать. Я также использую программу под названием Stan, для которой мне нужно скомпилировать код C ++, хотя автоматически генерируется код C ++. shadowtalker 9 лет назад 0
@Ramhound: У меня проблемы с вопросом, но ваш ответ хороший. +1 fixer1234 9 лет назад 0

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