1. ホーム
  2. visual-studio

Visual Studioの「コードの最適化」オプションは実際に何をするのですか?

2023-07-29 16:02:01

質問

オプションの名前は何かを物語っていますが、Visual Studio/compiler は実際に何を行い、どのような結果をもたらすのでしょうか。

編集:Googleで検索すると このアドレス というのがありますが、これは私が探しているものではありません。私は、実際に起こっていることを疑問に思っています。例えば、なぜループの時間が短くなるのか、などです。

どのように解決するのですか?

最適化なしでは、コンパイラーは非常に間抜けなコードを生成します。各コマンドは、意図されたことを実行するように、非常に単純な方法でコンパイルされます。Debug ビルドはデフォルトで最適化が無効になっていますが、これは最適化なしでは生成される実行可能ファイルがソース コードと素直に一致するためです。

レジスタに保持される変数

最適化を有効にすると、コンパイラーは多くの異なる技術を適用して、同じことを行いながらコードをより速く実行できるようにします。Visual C++ の最適化されたビルドと最適化されていないビルドの最も明白な違いは、最適化されたビルドでは変数の値ができるだけ長くレジスタに保持されるのに対して、最適化されていない場合は常にメモリに格納されるという事実です。これは、コード速度だけでなく、デバッグにも影響します。この最適化の結果、デバッガーはコードをステップ実行しているときに確実に変数値を取得することができません。

その他の最適化

コンパイラによって適用されるその他の最適化については /O オプション (コードの最適化) MSDN ドキュメント . さまざまな最適化手法の一般的な説明については ウィキペディアのコンパイラの最適化に関する記事 .