писали бы конкретно что интересует..
а практика обычно показывает что лучше -O2, размер кода и памяти для его выполнения меньше, меньше время компиляции, меньше глюков с отдельными приложениями, прирост скорости выполнения в случае O3 незначителен и может быть даже отрицательным.
если нужна практическая оценка для разработки чего-то своего - соберите сами и сравните, спрашивать смысла мало
-O3 лучше не использовать. Очень большой риск нарваться на код, корректный с точки зрения здравого смысла, но некорректный с точки зрения спецификации языка. Например, тот же самый строгий алиасинг указателей. В итоге получатся сложно диагностируемые ошибки.
>Например, тот же самый строгий алиасинг указателей.
Как вам не стыдно обманывать почтенных читателей лора!
-O3 от -O2 отличается в GCC лишь наличием ‘-finline-functions’, ‘-funswitch-loops’, ‘-fpredictive-commoning’, ‘-fgcse-after-reload’, ‘-ftree-vectorize’.
«строгий алиасинг указателей», как вы изволили высказаться, в этой разнице имеет честь отсутствовать.
-O3 от -O2 отличается в GCC лишь наличием ‘-finline-functions’, ‘-funswitch-loops’, ‘-fpredictive-commoning’, ‘-fgcse-after-reload’, ‘-ftree-vectorize’.
вроде только ‘-finline-functions’ и ‘-frename-registers’