コードの最適化
実行可能ファイルを最適化すると、実行速度の高速化とコード サイズの小型化のバランスを取ることができます。ここでは、Visual C++ に用意されている、コードの最適化に役立つ機構について説明します。
言語機能
次のトピックでは、C/C++ 言語の最適化機能について説明します。
最適化に影響するプラグマおよびキーワード
パフォーマンスを向上させるためにコードで使用できるキーワードとプラグマの一覧。コンパイラ オプション一覧 (カテゴリ別)
実行速度やコード サイズに特に影響する /O コンパイラ オプションの一覧。右辺値参照宣言子: &&
右辺値参照は、移動セマンティクスの実装をサポートします。移動セマンティクスを使用してテンプレート ライブラリを実装すると、そのテンプレートを使用するアプリケーションのパフォーマンスが大幅に向上します。
optimize プラグマ
最適化したコード セクションでエラーまたは処理速度の低下が発生する場合は、optimize プラグマを使用して該当するセクションの最適化を無効にできます。
次のように、コードを 2 つのプラグマで囲みます。
#pragma optimize("", off)
// some code here
#pragma optimize("", on)
プログラミング手法
最適化したコードをコンパイルすると、新たに警告メッセージが表示されることがあります。多くの場合、このような警告は最適化されたコードだけに関連するものであり、これは予期された動作です。これらの警告をよく確認すると、最適化に関する多くの問題を回避できます。
また、高速化のためにプログラムを最適化した結果、逆に速度が遅くなることもあります。これは、最適化の方法によってはコード サイズが大きくなるためです。たとえば、関数をインライン展開すると関数呼び出しのオーバーヘッドはなくなります。しかし、インライン展開するコードが多すぎるとプログラムのサイズが大きくなり、仮想メモリのページ フォールトの回数が増えます。したがって、関数の呼び出しをなくすことにより処理を高速化したとしても、メモリのスワップによってその効果が相殺されます。
次のトピックでは、推奨されるプログラミング方法について説明します。
タイム クリティカルなコードを高速化するためのヒント
適切なコーディング テクニックを使用することで、パフォーマンスを向上できます。ここでは、コードのタイム クリティカルな部分のパフォーマンスを向上させるために役立つコーディング テクニックについて説明します。最適化の推奨事項
アプリケーションの適切な最適化方法に関する一般的なガイドラインを示します。
最適化されたコードのデバッグ
最適化を行うと、コンパイラによって生成されたコードが変更される可能性があります。そのため、アプリケーションをデバッグし、パフォーマンスを測定してから、コードを最適化することをお勧めします。
以下のトピックでは、デバッグ方法に関する基本情報について説明します。
以下のトピックでは、デバッグ方法に関するより詳細な情報を提供します。
次の各トピックでは、コードのビルド、読み込み、および実行を最適化する方法についての情報を示します。
DLL メソッドを読み込む時間を短縮する方法詳細情報:MSDN ライブラリ Web サイトの MSDN マガジン内の「Under the Hood: Optimizing DLL Load Time Performance (DLL 読み込み時間のパフォーマンスの最適化)」を参照してください。
アプリケーション内のページングを最小限に抑える方法詳細情報:MSDN ライブラリ Web サイトの MSDN マガジン内の「Bugslayer: Improving Runtime Performance with the Smooth Working Set Tool (軽やかに動作する設定ツールによるランタイム パフォーマンスの改善)」と「Bugslayer: Improving Runtime Performance with the Smooth Working Set Tool-Part 2 (軽やかに動作する設定ツールによるランタイム パフォーマンスの改善、パート 2)」を参照してください。