7

Mac OS X のSharkは、実行中のシステムでアプリケーションをプロファイリングするための優れたツールです。Linux 用の同様のツールはありますか?

OProfileの可能性があるように見えますが、使用した人はいますか?

4

4 に答える 4

9

別の回答を拡張して、valgrind ( http://valgrind.org )の「callgrind」オプションを使用します。次に、KDE ​​からkcachegrindをインストールして、優れた GUI インターフェイスを使用します。

ダミーのチュートリアルとして、次のことを行います。

1) デバッグ情報を使用してアプリケーションをコンパイルします。最適化をオンとオフの両方でプロファイリングを試みることをお勧めします。最適化をオフにすると、より多くの情報が得られますが、精度が低くなる可能性があります (特に、小さな関数は、本来よりも多くの時間を費やすように見えます)。

2) 以下で実行:

valgrind --tool=callgrind <name of your app> <your app's options>

これにより、kcachegrind にロードできる「callgrind.something」というファイルが生成されます。

以下も参照できます。

valgrind --tool=cachegrind <name of your app> <your app's options>

これにより、アプリが CPU のキャッシュとどのようにやり取りしているかについての情報が得られます。

valgrind とサメは似たようなアプリのように見えますが、動作が大きく異なることに注意してください。valgrind でアプリを実行すると、通常より何倍も遅くなります (多くの場合 40 倍以上遅くなります) が、得られる結果はサメのものよりもはるかに正確です。私はどちらも使いがちなので、できるだけ多くの情報を得ることができます!

于 2008-12-02T17:48:22.407 に答える
5

おそらく Valgrind ( http://valgrind.org/ ) を試すことができます。これらには、実行時とコンパイル時の両方のプロファイリング ツールがあります。

于 2008-10-20T09:40:39.400 に答える
5

これに答えるには少し遅れますが、最も近い答えはZoomです。Shark チームの何人かがそれに取り組みました。

于 2010-12-07T10:34:57.843 に答える
4

OProfileは、アプリケーションとそれが行うシステム コールの両方のサンプリング ベースのプロファイリングを行うツールです。これにより、時間を費やしている場所に関する詳細情報を確認できます。GUI はありませんが、実行からの情報を処理できるフロントエンドがいくつかあります。

デスクトップ アプリケーションと組み込みシステムの両方で、広く使用しています。結果を解釈するには少し手間がかかりますが、callgraph の出力はここで非常に役に立ちます。

于 2008-12-03T03:26:40.430 に答える