C++ コードのボトルネックを見つけるために、プロファイラーを探しています。無料で邪魔にならない、優れたプロファイリング ツールを見つけたいと思います。私はゲーム開発者で、Xbox 360 用の PIX を使用しており、非常に優れていることがわかりましたが、無料ではありません。Intel VTuneは知っていますが、無料でもありません。
13 に答える
CodeXLは現在 End Of Line のAMD Code Analystに取って代わり、どちらも無料ですが、VTune ほど高度ではありません。
Sleepyもあります。これは非常に単純ですが、多くの場合に機能します。
注:上記の 3 つのツールはすべて、数年間メンテナンスされていません。
Very Sleepyは、Windows システム用の C/C++ CPU プロファイラーです (無料)。
Proffyはかなりクールです:http: //pauldoo.com/proffy/
免責事項:私はこれを書きました。
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にはWindowsPerformanceToolkitがあります。
Windows Vista、Windows Server 2008、またはWindows7が必要です。
別のプロファイラーはShinyです。
</p>
私は AQTime を使用しています。これは、これまで使用した中で最高のプロファイリング ツールの 1 つです。無料ではありませんが、30 日間の試用版を入手できます。1 つのプロジェクトのみの最適化とプロファイリングを計画し、30 日間で十分な場合は、このアプリケーションを使用することをお勧めします。( http://www.automatedqa.com/downloads/aqtime/index.asp )
私はLuke Stackwalkerを使用しましたが、それは私の Visual Studio プロジェクトの仕事をしてくれました。
その他の興味深いプロジェクトは次のとおりです。
cRunWatch という私のプロファイラーを試してみてください。これはたった 2 つのファイルであるため、プロジェクトに簡単に統合できます。また、コードをインストルメント化するために正確に 1 行を追加する必要があります。
http://ravenspoint.wordpress.com/2010/06/16/timing/
Boost ライブラリが必要です。
私は「TrueTime-コンピュウェアのDevPartnerスイートの一部です。[無料バージョン](Compuware DevPartner Performance Analysis Community Editionを試すことができます)が利用可能です。)を使用してきました。
StandAlone Visual Studio Profiler である VSPerfMon を使用しています。実行して結果を確認するのに役立つ GUI ツールを作成しました。
Linux と Windwos の両方で無料の EmbeddedProfiler を使用できます。
プロファイラーは (機能的に) 煩わしいものですが、コードを変更する必要はありません。特定のコンパイラ フラグ (gcc/MinGW の場合は -finstrument-functios、MSVC の場合は /GH) を追加して、プロファイラーのライブラリをリンクするだけです。完全な呼び出しツリーまたは関数リストのみを提供できます。独自のアナライザー GUI があります。