2012-02-19 6 views
3

C/C++プログラムでコードの各行にどれだけの時間を費やしているかを調べるためのプロファイリングツールを探しています。主にgccでLinuxプラットフォーム(Ubuntu、Gentoo、SL)に取り組んでいます。私はgpr​​ofを使用していますが、時には "per line"情報が必要です。C/C++コードの各行にどれくらいの時間が費やされているかを知るにはどうすればよいですか?

提案がありますか?ありがとうございました!

+1

GCCでは '-pg'でコンパイルし、' gprof'を使うことができます。正確には「1行について」ではありませんが、それに近いものです。 –

+5

あなたのプラットフォームはどれですか? – rotoglup

+0

@Kerrak:私はgpr​​ofを使用していることを忘れていましたが、時には "1行にする"必要があります。 – steffen

答えて

2

Linuxの場合、oprofileを使用できます。これは、ほぼすべてのプラットフォームで実行され、パフォーマンスモニタリングレジスタが利用可能な場合はそれをサポートするサンプルベースのプロファイラです。 x86では、AMDとIntelの両方で動作します。

注釈付きソースを提供するスタンドアロンプ​​ログラムとして使用できますが、Eclipseにうまく統合されたEclipse用のプラグイン(linuxtools)があります。

1

AMD CodeAnalystはあなたの最善の策ですが、それは完全に無料で、WindowsやLinuxでも動作しますが、主にAMD CPUのため、非AMD CPUはMSRベースのプロファイリングオプションを取得しません。 Windowsの下では、Visual Studio 2008 & 2010のための素晴らしい統合もあります。

ベンダーに固有の無料のプロファイラーの場合は、very sleepyも試してみることもできます。これもまたオープンソースです。

1

Zoomは、壁掛け時にサンプルを採取します。

次に、どの関数またはコード行が原因であるかの割合は、それが現れるサンプルの割合です。 たとえば、コード行がスタックサンプルの30%にあり、実行を避けることができる場合、合計実行時間は30%減少します。

これは、I/O、再帰、競合するプロセス、スワッピング、多くのプロファイラを混乱させるすべてのもの。

+0

+1面白いです。それを試してみる必要があります。 – hirschhornsalz

+0

@drhirsch:以前の会話からわかるように、ズームは簡単には見つからないものもありますが、プロファイラーが行くと、すべての正しいことをしています。 –

関連する問題