Устанавливал способную сборку. Видел три уровня оптимизации для кода, "Света", "Среднего" и "Сильного". Это предупредило, что сильный приведет к неустойчивости системы, таким образом, я выбрал Носитель.
Существует ли заметное различие между уровнями оптимизации?
Я должен просто пойти-O3?
Я сказал бы, что это едва зависит от кода, который Вы компилируете.
Независимо от того, что Вы выбираете там, закончится как флаг для 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
/ Сильный).