プロファイルおよび性能向上用ツール

プロファイル情報を生成するには,ビジュアル開発環境かコマンド行からコンパイラ,リンカー,およびプロファイラを使用します。

アプリケーション中のプロファイル対象とするのに最も適している部分を選択します。たとえば,ユーザーとの会話を行うルーチンはプロファイルを行っても無意味でしょう。一連の複雑な計算を行うルーチンや,複数のユーザー定義副プログラムを呼び出すルーチンを,プロファイルの対象として検討します。

プロファイルは,プログラムの実行に多くの時間が費やされているコード領域を識別します。また,実行されていないコード領域を示すこともできます。Windows ia32 開発環境で作成された Visual Fortran プログラムは,Windows NT 4, Windows XP,Windows 2000, Windows 95,Windows 98 または Windows ME システムで実行し,解析することができます。可能な限り,詳しい性能解析は,実際のアプリケーションを実行するシステムによく似たシステムで行うようにしてください。

コマンド行からのプロファイルについての詳細は,「コマンド行からのコードのプロファイル」を参照してください。

プロファイルには,主に関数プロファイル行プロファイルの 2 つの形式があります。

関数プロファイル

関数プロファイルを使うと,非効率的なコードが存在する領域を発見することができます。次の情報が得られます。

関数プロファイルでは,デバッグ情報は必要ありません (アドレスは .MAP ファイルから取得されます)。関数プロファイルは (関数属性を除いて) スタックを使用するので,スタックを変更するルーチンのプロファイルは行えません。スタックを変更するルーチンのオブジェクト・ファイルは除外するようにしてください。

関数プロファイルを実行する方法

  1. 「Project」メニューの「Settings」を選択します。

  2. 「Link」タブをクリックします。

  3. 「General」カテゴリで,「Enable profiling」チェックボックスをクリックします。これで増分リンクがオフにされます。

  4. 「General」カテゴリで,「Generate mapfile」チェックボックスをクリックします。

  5. 「OK」をクリックして,現在のプロジェクト設定を受け入れます。

  6. アプリケーションをビルドします。

  7. アプリケーションがビルドされたら,プロジェクトのプロファイルを行います。

行プロファイル

行プロファイルは,関数プロファイルよりも多くの情報を収集します。特定の行が何度実行されたか,また特定の行が実行されたかどうかを示します。行プロファイルにはデバッグ情報が必要となります。

行プロファイルを実行する方法

  1. 「Project」メニューの「Settings」を選択します。

  2. 「Link」タブをクリックします。

  3. 「General」カテゴリで,「Enable profiling」チェックボックスをクリックします。これで増分リンクがオフにされます。

  4. 「General」カテゴリで,「Generate debug information」チェックボックスをクリックします。

  5. 「Fortran」タブをクリックします。

  6. 「Category」ドロップダウンリストで,「Debug」を選択します。

  7. 「Debugging level」ドロップダウンリストで,「Full」を選択します。

  8. 「Debugging level」ドロップダウンリストで,「Use Program Database for Debug Information」チェックボックスをクリックします。

  9. 「OK」をクリックして,現在のプロジェクト設定を受け入れます。

  10. アプリケーションをビルドします。

  11. アプリケーションがビルドされたら,プロジェクトのプロファイルを行います。

性能向上用ツール

性能を解析するために使用できるツールには次のものがあります。

また,性能解析とプロファイルを行う製品を別途購入することもできます。

効率的なソース・コード

プログラムの実行時間の大部分が費やされているコード部分を発見したら,これらの部分で効率的なコードが使われているかどうかを確認します。ソース・コードを効率良くするためのガイドラインは,次の節にあります。

アプリケーションの実行速度の計測と,Windows NT パフォーマンス・モニタを使用するコマンド・プロシージャの例については,「アプリケーションの実行速度の計測」を参照してください。