Linux で C++ を実行しているコードをプロファイリングする必要があります。おすすめのプロファイラーを教えてください。
9 に答える
valgrindはよく知られている Linux プロファイラーです。
RotateRight ( http://www.rotateright.com ) のズームは、私が使用しているものです。関数のバタフライ ビューがあり、任意の関数をダブルクリックして、ソース コードまたは asm コードに飛び込むことができます。ソースを表示するには、デバッグ情報 (-g) を使用してビルドしますが、最適化されたコードをビルドしてプロファイリングする必要があります。
私はOprofileのファンです。カーネルモジュールをインストールする必要があり、少し学習曲線がありますが、かなり強力で、シンボルをデバッグせずに最適化されたプログラム/プログラムに対して非常にうまく機能します。
Vtuneは、Intel が作成したもう 1 つの非常に強力なプロファイラーです。非商用ソフトウェアの場合、Linux バージョンは無料だと思います。
dfa によって提案されたツールのValgrindスイートもあります。Callgrind はおそらくあなたが最も興味を持っているものでしょう。Cachegrind (その機能セットは Callgrind のサブセットです) と Massif も興味深いですが、私は後者の経験がありません。
Sysprofを見てください。あなたのディストリビューションでは、すでに利用可能になっている可能性が最も高いです。
上記のすべてのプロファイラーは、アプリケーションがフレーム ポインターを使用してコンパイルされている場合に最適に機能することに注意してください。つまり、gcc コマンド ラインで -fno-omit-frame-pointer を使用する必要があります。
gprof は、プロファイリング用の標準の gnu ツールです。