Windowsに最適な無料のC ++プロファイラーは何ですか?[閉まっている]


224

C ++コードのボトルネックを見つけるために、プロファイラーを探しています。無料で邪魔にならない、優れたプロファイリングツールを見つけたいのですが。私はゲーム開発者です。Xbox360でPIXを使用していますが、非常に優れていることがわかりましたが、無料ではありません。インテルVTuneは知っていますが、無料でもありません。


現在、VTuneは無料のようです:software.intel.com/en-us/vtune。コミュニティエディションをダウンロードしたところ、C ++およびマネージドC#コードのプロファイリングに非常に
Dr. ABT

1
これはどのように話題外ですか?私が知る限り、開発ツールは話題になっています。でも意見ベースです。
Nic Szerman、

回答:


135

CodeXLは、End Of LineのAMD Code Analystに取って代わりました。どちらも無料ですが、VTuneほど高度ではありません。非常にシンプルなSleepyもありますが、多くの場合に機能します。


4
CodeAnalystへのリンクは次のとおりです
。developer.amd.com/CPU/CODEANALYST/Pages/default.aspx

1
私は今それを使ってみましたが、それはまったく好きではありませんでした。TrueTimeが10年前に正常に実行できた関数の合計時間(呼び出し先を含む)を取得する方法も理解できませんでした。
Pavel Radzivilovsky、2011年

wxWidgetsに依存せず、コマンドラインで実行するsleepyの改作を書きました。実行中のプロセスに対して一定期間実行し、停止すると、プロセスが時間を費やしていたことの統計を取得します。それを使用するためにコードを変更する必要がないという点で非信頼的ですが、コールスタックを読み取るときにスレッドを一時停止します。意味のある出力を得るには、利用可能なpdbファイルも必要ですが、それはどのプロファイラーにも当てはまると思います。
CashCow

AMDコードアナリストよりも優れているxperfを試すことをお勧めします。
MW_dev 2013年

1
CodeAnalystは、重大なバグ修正を除いて、これ以上のアップデートを受信しません。彼らはCodeXLに切り替えました。回答を更新できるリンクです。ちなみに、CodeAnalyst / XLについて説明させていただきありがとうございます。
Adri CS

61

Very Sleepyは、Windowsシステム用のC / C ++ CPUプロファイラーです(無料)。
CppCheckは、Windowsシステム用の静的C / C ++ CPUプロファイラーです(無料)。


20
googletestはユニットテストフレームワークです。それをどのように使用してプロファイリングを実行しますか?
グレートウルフ、2011年

gccスタックからのWindowsバイナリを使用している場合、これは素晴らしい選択です。AMDCodeAnalystはWindowsでgccシンボルを認識しませんが、非常に眠いです!
マイク


17

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());
}

1
それは使いやすく、超高速のプロファイラーです。私が解決しなかった唯一の問題は、デバッグが終了した後、プロファイラーウィンドウが自動的に閉じず、タスクマネージャーを使用してそれを強制終了する必要があるという問題です(それがないと、プロジェクトを再コンパイルできません)。
Ludek Vodicka 2012年

1
通常の[閉じる]ボタンでアプリを閉じた後、プロファイラーウィンドウも定期的に閉じることができることがわかりました。しかし、Shift + F5ショートカット(VSコマンドのデバッグを停止)でアプリを終了すると、プロファイラーウィンドウの閉じるボタンが無効になります。
Ludek Vodicka 2012年

VS 2015では機能しません
。– rustyx

1
1.1.590で修正されました。Visual Studioギャラリーページ(visualstudiogallery.msdn.microsoft.com/…)の最新情報を見る
Arty

1
これは本当にいいです!ランクを高くする必要があります!インストールと実行が非常に簡単で、知っておくべきことのほとんどを提供します。私の2番目の選択肢はWindowsパフォーマンスアナライザーです:geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Steve

10

MicrosoftにはWindows Performance Toolkitがあります。

Windows Vista、Windows Server 2008、またはWindows 7 が必要です。


6
どうして無料ではないのですか?これは、Windows SDKの一部です。問題なくダウンロードできました。(確かに、私たちはMSDNサブスクリプションを持っているので、一部の人々は私とは異なる経験をするかもしれません。)
epotter

1
無料かどうかにかかわらず、リンクは正しく機能しなくなります。
トマーシュZato -復活モニカ

7

新作追加はシャイニー

​​​​​


3
ダウンロード可能なバイナリが見つかりません。ソースコードのみです。あまり便利ではありません。
Monsignor

5

Windows Performance Toolkit(WPT)またはXPERFを強くお勧めします

コマンドラインxperfコマンドラインツールは、GUI xperfviewツールを使用して分析できるWindows(ETW)のイベントトレースを記録します。

stacktraceコマンドライン引数の使用は、ボトルネックのプロファイリングとトラブルシューティングを行うため、私の会社にとって非常に貴重なツールであることが証明されています。最も説得力のあるものの1つは、由緒あるWindows XPでもWPTを任意の環境にインストールできることです。です。

上のWindows 8のWindowsパフォーマンス・アナライザさらに高いレベルにXperfはかかります。

ETWログで提供されるハード番号と統計は、ビジュアルスタジオプロファイラー(2010/2012)を除いて、他に類を見ないほど詳細です。

xperfを使用したことがない場合...何が欠けているかわからない


1
まあ、私はサイトへの有効なURLが欠落していることを知っています。
トマーシュZato -復活モニカ

3

私はAQTimeを使用しています。これは、これまでに使用した中で最高のプロファイリングツールの1つです。これは無料ではありませんが、30日間の試用版を入手できるため、1つのプロジェクトのみを最適化してプロファイリングすることを計画しており、30日で十分な場合は、このアプリケーションの使用をお勧めします。(http://www.automatedqa.com/downloads/aqtime/index.asp


このツールだけが、IISでリリースモードの混合(管理とネイティブ)Webアプリケーションでコンパイルされたプロファイルを作成するのに役立ちました。
Monsignor

彼らが彼らの製品を評価しようとする人々をサポートしないのは残念です。
ラッキールーク

現在、機能制限付きの14日間のトライアルを提供しています。
Max

2

cRunWatchと呼ばれる私のプロファイラーを試してください。これは2つのファイルにすぎないため、プロジェクトとの統合が簡単で、コードをインスツルメントするために1行を追加する必要があります。

http://ravenspoint.wordpress.com/2010/06/16/timing/

Boostライブラリが必要です。



0

私は「TrueTime-CompuwareのDevPartnerスイートの一部を何年も使用しています。[無料バージョン](Compuware DevPartner Performance Analysis Community Editionを試すことができます)があります。


0

StandAlone Visual Studio ProfilerであるVSPerfMonを使用しています。私はそれを実行して結果を確認するのに役立つGUIツールを作成しました。

http://code.google.com/p/vsptree/


0

EmbeddedProfilerを使用できます。これはLinuxとWindwosの両方で無料です。

プロファイラーは(機能によって)侵入的ですが、コードの変更は必要ありません。特定のコンパイラフラグ(gcc / MinGWの場合は-finstrument-functios、MSVCの場合は/ GH)を追加して、プロファイラーのライブラリをリンクするだけです。それはあなたにあなたに完全なコールツリーまたはちょうどfuncitonリストを提供することができます。独自のアナライザーGUIを備えています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.