2009-05-05 15 views
2

私はVC++でintelのコンパイラでコンパイルされたアプリケーションをプロファイリングする必要があります。 VTuneを使用して自分のコードをプロファイルしています。プロファイリングにはどのコンパイルオプションを設定する必要がありますか?

リリースモードでは、プロファイラがデバッグモードで私のコードをプロファイリングするために必要なデバッグ情報 を持っていないことを理解しています。プロファイリング結果の は関係ありません。

どうすればよいですか?リリースモードでデバッグ情報を追加することは可能ですか? このモードを設定するにはどうすればよいですか?

もしそうなら、すべての最適化(インライン化など)のメリットはありますか?

答えて

4

最適化を有効にしてプロファイルする必要があります(コンパイラオプション/ O3)。/Ziはデバッグ情報を有効にするインテルコンパイラスイッチ(Windows版)です。

最適化のために、インライン展開のためにデバッグ情報に機能が不足することがありますが、VTuneはそれに対応します。

+0

"それに対応"?これがいかなる状況下でも起こるとは思わないでください。 – JohnTortugo

+0

@JohnTortugo:あなたが何を意味しているかわからない - 他に何があるの?プロファイリングが代表的なものになるように最適化が必要ですが、それは関数がインライン化され、関連するデバッグ情報を持たないことを意味します。これに対処するのは、デバッガとプロファイラの仕事です。 –

3

リリースターゲットでもプログラムデータベースファイル(PDB)を生成できます。プロジェクトのプロパティ、リンカ/デバッグに行き、オプション "Generate Program Database File"をチェックします。これは通常、 "$(TargetDir)$(TargetName).pdb"のようなものです。今、VTuneがPDBファイルの解釈方法を知っているかどうかによって異なります...

1

機能のインライン化とプロセス間最適化により、プロファイルの解釈が難しくなります。そのため、デバッグモードとリリースモードの両方でプロファイリングすることをお勧めします。リリースモードでプログラム時間の80%を使用する関数fooのみが表示されている場合は、デバッグプロファイルを使用してfooにインライン展開された関数バーがfooの時間の60%を使用していることを確認できます。