Каково различное использование для уровней оптимизации способной сборки?

Устанавливал способную сборку. Видел три уровня оптимизации для кода, "Света", "Среднего" и "Сильного". Это предупредило, что сильный приведет к неустойчивости системы, таким образом, я выбрал Носитель.

Существует ли заметное различие между уровнями оптимизации?

Я должен просто пойти-O3?

4
задан 10 June 2011 в 01:21

1 ответ

Я сказал бы, что это едва зависит от кода, который Вы компилируете.

Независимо от того, что Вы выбираете там, закончится как флаг для GCC, так после страницы справочника GCC:

-O, -O1. С -O компилятор пытается уменьшить размер кода и время выполнения, не выполняя оптимизации, которая занимает много времени компиляции.

-O2 Оптимизируйте еще больше. GCC выполняет почти всю поддерживаемую оптимизацию, которая не включает компромисс скорости пространства. По сравнению с-O эта опция увеличивает и время компиляции и производительность сгенерированного кода.

-O3 Оптимизируйте еще больше. -O3 включает всю оптимизацию, указанную -O2 и также включает -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload, -ftree-vectorize и -fipa-cp-clone опции.

Можно работать

gcc -O<1-3> -Q --help=optimizers

видеть набор активированных методов оптимизации для каждого уровня оптимизации.

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

4
ответ дан 1 December 2019 в 09:57

Другие вопросы по тегам:

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