速度とサイズ
最適化レベルが高の場合、コンパイラはサイズの最適化と速度の最適化の間のバランスを取ります。ただし、サイズまたは速度に対して明示的に最適化を微調整することも可能です。それらは、使用するしきい値のみの違いです。速度の場合は、サイズを犠牲にして速度を上げ、サイズの場合は、速度を犠牲にしてサイズを小さくします。
最適化レベル高(速度)を使用する場合、--no_size_constraintsコンパイラオプションは、コードサイズ拡張に対する通常の制限を緩和して、より積極的な最適化を可能にします。
コマンドラインオプションおよびプラグマディレクティブを使用して、各モジュールや個々の関数に対しても最適化の目標設定を選択することができます(-Oおよびoptimizeを参照)。小さい組み込みアプリケーションの場合、これによってコードのサイズを最小限に抑えつつ、適度な速度のパフォーマンスを実現することができます—通常は最も頻繁に実行する内部のループや割り込みハンドラなど、高速でなければならないのはアプリケーションの数箇所のみです。
アプリケーション全体を最適化レベル「高」(バランス)でコンパイルするよりも、「高」(サイズ)を全般に使用しながら、高速のアプリケーションが必要な関数についてのみ、この設定を最適化レベル「高」(速度)でオーバライドすることができます。
注記
異なる最適化の相互の影響が予測不可能なため、ある最適化によって他の最適化が有効となる場合は、「高」(サイズ)を使用したときよりも「高」(速度)でコンパイルしたときの方が関数が小さくなることがあります。また、複数ファイルのコンパイルを使用すると(‑‑mfcを参照)、多くの最適化を有効にして速度とサイズの両方のパフォーマンスを向上することができます。プロジェクトに最も適したものを選べるように、異なる最適化設定を試してみることをお勧めします。