-O3
いくつかの欠点があります:
-O2
よりも遅いコードを生成することがよくあります または -Os
.場合によっては、ループ展開により長いコードが生成されますが、実際にはコードのキャッシュ パフォーマンスが低下するため遅くなる場合があります。-O3
にも当てはまります .-O3
フラグはしません コンテキスト切り替えのコストまたは I/O の速度を変更します。全体的なパフォーマンスの <0.1% の高速化などに値するものはないと思います。Gentoo で使用されていますが、特に異常はありませんでした。
最適化レベルを変更すると、ツールチェーン (特に glibc) の大きなチャンクが完全にコンパイルされないことに注意してください。ビルド システムは、ほとんどの健全なディストリビューションで、これらのセクションの -O 設定を無視するようにセットアップされています。
簡単に言えば、特定の基本的なライブラリと OS の機能は、コードが実際に実行するコードに依存しており、多くの場合、何が高速になるかではありません。特に -fgcse-after-reload (-O3 で有効化) は奇妙な問題を引き起こす可能性があります。