-O3最適化を使用したGNU/Linuxのコンパイル

-O3最適化を使用したGNU/Linuxのコンパイル

-O3GNUツールとLinuxカーネルをコンパイルするためにgcc最適化オプションを使用すると、奇妙なバグが発生すると言われています。これは本当ですか?誰かがこれを試したことがありますか?それともこれは単なる詐欺ですか?

ベストアンサー1

-O3いくつかの欠点があります。

  1. まず、生成されるコードは通常、-O2または-Os。ループのゆるみによってコードが長くなることもありますが、実際にはコードのキャッシング性能が悪く、速度が遅くなることがあります。
  2. 言ったように、時には間違ったコードが生成されます。これは、最適化エラーやコーディングエラー(厳密なエイリアスを無視するなど)が原因で発生する可能性があります。カーネルコードは時々「スマート」であり、時には「インテリジェント」でなければならないので、いくつかのカーネル開発者が間違いを犯した可能性があります。当時、安定したgcc 4.5を使用してカーネルをコンパイルするとき、ユーザースペースユーティリティの競合など、あらゆる種類の奇妙な問題に直面しました。さまざまなバグのため、私はまだカーネルにgcc 4.4を使用しており、いくつかの選択されたユーザースペースユーティリティを使用しています。同じ状況が適用されます-O3
  3. 私はそれがLinuxカーネルに多くの利点をもたらすとは思わない。カーネルは過度の計算を実行せず、アセンブリ最適化機能を備えています。-O3フラグはいいえコンテキスト切り替えコストまたはI / O速度を変更します。私は0.1%未満の全体的なパフォーマンススピードの向上がそれほど価値があるとは思いません。

おすすめ記事