C++コードのボトルネックを見つけるために、プロファイラーを探しています。無料で、邪魔にならず、優れたプロファイリングツールを見つけたいです。私はゲーム開発者で、Xbox 360にPIXを使用していますが、非常に優れていますが、無料ではありません。 Intel VTune を知っていますが、無料でもありません。
CodeXL はEnd of Line'dに取って代わりました AMD Code Analyst は両方とも無料ですが、VTuneほど高度ではありません。 Sleepy もあります。これは非常に単純ですが、多くの場合に機能します。
Very Sleepy は、Windowsシステム用のC/C++ CPUプロファイラーです(無料)。
CppCheck は、Windowsシステム用の静的C/C++ CPUプロファイラーです(無料)。
Proffyは非常にクールです: http://pauldoo.com/proffy/
免責事項:私はこれを書いた。
MS VC 7.1以降にはMicroProfilerと呼ばれるインストルメンテーション(関数精度)プロファイラーがあります。 ここ(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が必要です。
新しい追加は Shiny です。
Windows Performance Toolkit(WPT) またはXPERFを強くお勧めします
コマンドラインxperfコマンドラインツールは、GUI xperfviewツールを使用して分析できるWindowsのイベントトレース(ETW)ログを記録します。
stacktrace command line arguement を使用すると、ボトルネックのプロファイリングとトラブルシューティングを行うため、私の会社にとって非常に貴重なツールであることが証明されました。最も説得力のあることの1つは、由緒あるWindows XPでもWPTをあらゆる環境にインストールできることです。
Windows 8では、Windows Performance Analyzerは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を試すことができます)があります。」.
EmbeddedProfilerを使用できます。LinuxとWindwosの両方で無料です。
プロファイラーは(機能的に)侵入的ですが、コードの変更は必要ありません。特定のコンパイラフラグ(gcc/MinGWの場合は-finstrument-functios、MSVCの場合は/ GH)を追加して、プロファイラーのライブラリをリンクします。完全なコールツリーまたは単なる機能リストを提供できます。独自のアナライザーGUIがあります。