C ++コードのボトルネックを見つけるために、プロファイラーを探しています。無料で邪魔にならない、優れたプロファイリングツールを見つけたいのですが。私はゲーム開発者です。Xbox360でPIXを使用していますが、非常に優れていることがわかりましたが、無料ではありません。インテルVTuneは知っていますが、無料でもありません。
C ++コードのボトルネックを見つけるために、プロファイラーを探しています。無料で邪魔にならない、優れたプロファイリングツールを見つけたいのですが。私はゲーム開発者です。Xbox360でPIXを使用していますが、非常に優れていることがわかりましたが、無料ではありません。インテルVTuneは知っていますが、無料でもありません。
回答:
CodeXLは、End Of LineのAMD Code Analystに取って代わりました。どちらも無料ですが、VTuneほど高度ではありません。非常にシンプルなSleepyもありますが、多くの場合に機能します。
Very Sleepyは、Windowsシステム用のC / C ++ CPUプロファイラーです(無料)。
CppCheckは、Windowsシステム用の静的C / C ++ CPUプロファイラーです(無料)。
MicroProfilerと呼ばれる、MS VC 7.1以降用のインストルメンテーション(関数精度)プロファイラーがあります。ここ(x64)またはここ(x86)で入手できます。これは、任意の変更や追加を必要としないあなたのコードへのとで発信者や呼び出し先の関数の統計情報を表示することが可能であるリアルタイムプロファイリングプロセスを停止/アプリケーションを閉じる必要なし。
VisualStudioと統合されているため、プロジェクトのプロファイリングを簡単に有効または無効にできます。クリーンなマシンにインストールすることもできます。プロファイルされている実行可能ファイルと一緒にシンボル情報を配置するだけです。
このツールは、Very Sleepyなどのサンプリングプロファイラーからの統計的近似では不十分な場合に役立ちます。
大まかに比較すると、AQTimeを上回ることがわかります(インストルメンテーションで呼び出されたとき、関数レベルの実行)。次のプログラム(完全最適化、インライン無効)は、AQTimeが単に統計を収集する場合よりも、リアルタイムで結果を表示するマイクロプロファイラーを使用すると、3倍速く実行されます。
void f()
{
srand(time(0));
vector<double> v(300000);
generate_n(v.begin(), v.size(), &random);
sort(v.begin(), v.end());
sort(v.rbegin(), v.rend());
sort(v.begin(), v.end());
sort(v.rbegin(), v.rend());
}
MicrosoftにはWindows Performance Toolkitがあります。
Windows Vista、Windows Server 2008、またはWindows 7 が必要です。
Windows Performance Toolkit(WPT)またはXPERFを強くお勧めします
コマンドラインxperfコマンドラインツールは、GUI xperfviewツールを使用して分析できるWindows(ETW)のイベントトレースを記録します。
stacktraceコマンドライン引数の使用は、ボトルネックのプロファイリングとトラブルシューティングを行うため、私の会社にとって非常に貴重なツールであることが証明されています。最も説得力のあるものの1つは、由緒あるWindows XPでもWPTを任意の環境にインストールできることです。です。
上のWindows 8のWindowsパフォーマンス・アナライザさらに高いレベルにXperfはかかります。
ETWログで提供されるハード番号と統計は、ビジュアルスタジオプロファイラー(2010/2012)を除いて、他に類を見ないほど詳細です。
xperfを使用したことがない場合...何が欠けているかわからない
私はAQTimeを使用しています。これは、これまでに使用した中で最高のプロファイリングツールの1つです。これは無料ではありませんが、30日間の試用版を入手できるため、1つのプロジェクトのみを最適化してプロファイリングすることを計画しており、30日で十分な場合は、このアプリケーションの使用をお勧めします。(http://www.automatedqa.com/downloads/aqtime/index.asp)
cRunWatchと呼ばれる私のプロファイラーを試してください。これは2つのファイルにすぎないため、プロジェクトとの統合が簡単で、コードをインスツルメントするために1行を追加する必要があります。
http://ravenspoint.wordpress.com/2010/06/16/timing/
Boostライブラリが必要です。
私は「TrueTime-CompuwareのDevPartnerスイートの一部を何年も使用しています。[無料バージョン](Compuware DevPartner Performance Analysis Community Editionを試すことができます)があります。
StandAlone Visual Studio ProfilerであるVSPerfMonを使用しています。私はそれを実行して結果を確認するのに役立つGUIツールを作成しました。