web-dev-qa-db-ja.com

Linux上のC ++用の使いやすいプロファイラとは何ですか?

LinuxでC++を実行しているコードをプロファイルする必要があります。プロファイラーを推薦できますか?

74
shergill

Gprofを使用します。

-pgフラグを付けてコンパイルするだけです(ただし、最適化を有効にする必要があると思います(ただし、確信はありません))。gprofを使用して、実行可能ファイルが生成するgmon.outファイルを分析します。

例えば:

gcc -pg -o whatever whatever.c

./whatever

gprof whatever gmon.out

G ++とcppでも同じことが言えます。

36
smcameron

valgrind は有名なLinuxプロファイラーです

24
dfa

RotateRightからのズーム( http://www.rotateright.com )は私が使用しているものです。関数のバタフライビューがあり、任意の関数をダブルクリックしてソースコードまたはasmコードに飛び込むことができます。デバッグ情報(-g)を使用してビルドしてソースを表示しますが、optimizedコードをビルドおよびプロファイリングする必要があります。

13
XWare

私は Oprofile のファンです。カーネルモジュールのインストールが含まれており、多少の学習曲線がありますが、かなり強力であり、デバッグシンボルのない最適化されたプログラム/プログラムに非常に適しています。

Vtune は、Intel製の別の非常に強力なプロファイラーです。 Linuxバージョンは非商用ソフトウェアには無料だと思います。

Valgrind dfaによって提案されたツールスイートもあります。 Callgrindはおそらくあなたが最も興味を持っているものでしょう。

12
Falaina

KCacheGrind を見てください。これは valgrind のグラフィカルなフロントエンドであり、非常に使いやすくなっています。

5
Milan Babuškov

Googleには google-perftools の一部としてNiceプロファイラーもあります。これはDebian/Ubuntuおよびおそらく他のディストリビューションに含まれています。

4

Sysprof をご覧ください。ほとんどの場合、ディストリビューションはすでに利用可能になっています。

アプリケーションがフレームポインターを使用してコンパイルされている場合、上記のすべてのプロファイラーが最適に機能することに注意してください。つまり、gccコマンドラインで-fno-omit-frame-pointerを使用する必要があります。

2
Søren Sandmann

gprofは、プロファイリング用の標準的なgnuツールです。

2
twk
1
Mike Dunlavey