75

Mac (os x Lion) でいくつかの C++ コードのプロファイルを作成しようとしていますが、有用なものを見つけることができませんでした。どの関数が CPU 時間を消費しているかを教えてくれるプロファイラーを探しています (matlab プロファイラーに似ています)。

これが私が試したことです

  • gprof. これは私が Linux マシンで使用しているものですが、Mac では空の出力しか得られません (明らかに既知の問題です)。
  • 楽器。コンパイルされたバイナリ内で何かをプロファイリングする方法を理解することはできません。また、役立つチュートリアルも見つかりません。
  • (他の検索では、使用できなくなった Shark とメモリ用の Valgrind が見つかりました)。

助けてくれて本当にありがとう!

4

3 に答える 3

120

楽器は使う道具です。Instruments の完全な説明はこの回答の範囲外ですが、クイックスタートガイドは次のとおりです。

  1. 楽器を開きます。1
  2. 「Time Profiler」テンプレートを選択します。
  3. [ターゲット] ドロップダウン メニューでアプリケーションを選択します。2
  4. 赤い丸 (「記録」) ボタンをクリックして、アプリケーションの実行を開始します。
  5. 該当する場合は、アプリケーションでプロファイリングする必要があるいくつかのことを行います。
  6. 録音ボタンをもう一度押すと、録音が​​停止します。
  7. Instruments のツールを使用して、結果を分析します。

利用可能なツールのうち、最も頻繁に役立つツールは次のとおりです。

  • 開示矢印を使用してコール ツリーを展開する
  • 関数名の丸で囲まれた矢印をクリックしてフォーカスする
  • 関数をダブルクリックして関連するソースを表示する
  • 左側の「Invert Call Tree」チェックボックス

instrumentsコマンド ラインでの呼び出しを開始することもできます。

instruments -l 30000 -t Time\ Profiler -p 5773

指示を参照してください。


1 Instruments を開く簡単な方法の 1 つは、Spotlight を使用することです。タスクバーの右上隅 (時計の横) にある虫眼鏡をクリックして、「Instruments」と入力します。

2 [Choose Target...] をクリックして、実行可能ファイルのパスに移動します。

于 2012-07-12T05:58:01.123 に答える
8

Instrumentsは本当に正しい答えですが、それを使用する方法がわからない場合は、組み込みのActivityMonitorアプリケーションのプロファイラーが別のオプションです。Activity Monitorでは、実行中のプロセスに関する情報を取得でき、しばらくの間その実行をサンプリングするためのボタンがあります。プログラムを開始し、Activity Monitorに切り替え、プロセスを見つけて、サンプリングする必要があります。

さらに、デバッガーでプログラムを実行し、手動で半ダースほど一時停止し、そのときの呼び出しスタックに注意するだけで、「貧乏人のプロファイリング」を行うことができます。これは非常に単純ですが、プログラムのかなりの部分の最初のパスとして驚くほどうまく機能します。

sample他のプログラムと同じようにコールスタックをサンプリングするコマンドラインプログラムもあります。

于 2013-03-15T20:01:28.067 に答える