2017-01-25 2 views
2

Похоже, что настройки оптимизации Apple LLVM 8.0 - Code Generation отключены по умолчанию в последнем XCode, 8.2.1, даже для конфигурации Release. Хорошая причина для этого? Я думал, что цикл разворота - одна из самых основных оптимизаций.Почему в XCode по умолчанию отключается цикл?

ответ

1

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

Tuning for Performance and Responsiveness

Таблица 6-1 Compiler параметры оптимизации

Быстрее

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

быстрый

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

+2

Имеет смысл. Хотя, на самом деле, я не совсем уверен, что clang, запускаемый XCode, на самом деле не выполняет * разворачивание, даже когда «Loop Loop» выключен, потому что «Быстрее» ('-O2'), в соответствии с фактическими флажками clang, включает в себя разворот цикла, см. http://stackoverflow.com/questions/15548023/clang-optimization-levels/15548189#15548189 – Danra

Смежные вопросы