プロファイラーのスナップショットを読む
プロファイラーツールウィンドウ ( ) では、収集されたデータがフレームグラフ、呼び出しツリー、メソッドリスト、統計、呼び出しグラフの複数のタブに表示されます。
スナップショットを移動する
特定の方法に集中しながら、タブ間を移動できます。必要なメソッドを右クリックして、それを開く別のビューを選択します。
フレームグラフ、呼び出しツリー、メソッドリストタブのどのメソッドでも、マージされた呼び出し先ツリーとバックトレースツリーを開くことができます。メソッドを右クリックし、それぞれメソッドのマージされた呼び出し先またはメソッドのバックトレースを選択します。
スレッド
プロファイラーツールウィンドウのタブ内のプロファイリングデータは、スレッドごとにグループ化されています。プロセス全体 ( 全スレッドマージ済み ) のマージされたデータを表示するか、詳細な調査のために特定のスレッドを選択するかを選択できます。
スレッドを表示
デフォルトでは、スレッドのリストは非表示になっており、すべてのスレッドを合わせたデータが表示されます。
特定のスレッドを選択したり、スレッドのリストを確認したりするには、左側のツールバーのスレッドビューを表示をクリックします。
スレッドはプロファイラーツールウィンドウの左側に一覧表示され、収集されたサンプルの数でソートされています。リストの一番上で最もビジーなスレッドを見つけることができます。
フレームグラフ
フレームグラフは、幅順に並べられたコールスタックのフレームを表す四角形を使用して、アプリケーションのコールツリーを視覚化します。
呼び出しの詳細を取得する
ブロックの上にマウスを置くと、フレームの詳細を含むツールチップが表示されます。ツールチップには、スナップショット全体とフレームの直接の親における時間の割合が表示されます。
グラフをズームする
フレームグラフのツールバーまたはスクロールホイールの ボタンと ボタンを使用して、グラフをズームします。
特定の方法に焦点を合わせるには、グラフ上の対応するブロックをダブルクリックします。
グラフの元のサイズに戻すには、ツールバーの 1:1 をクリックします。
グラフを検索する
グラフ上で特定のメソッドを見つけたい場合は、その名前の入力を開始するか、 をクリックして検索バーに名前を入力します。
グラフは、検索リクエストに一致するメソッド名を持つすべてのブロックをハイライトします。
および を使用すると、検索結果間を高速に移動できます。ツールバーのボタンを使用すると、グラフ全体または特定のサブツリーを検索し、何かが見つかるとすぐに結果に移動することもできます。
グラフをキャプチャーする
スナップショット内の他のデータとは別にグラフをキャプチャーしてエクスポートできます。
をクリックしてクリップボードにコピーを選択するか、保存をクリックしてグラフを .png 形式のイメージとしてエクスポートします。
フレームグラフで 2 つのスナップショットの違いを視覚化できます。
ベースラインと比較する
2 つのスナップショットを開きます。スナップショットを開くには、プロファイラーを 2 回実行するか、
に移動してここでスナップショットを選択します。基準と比較ボタンをクリックして、比較するスナップショットを選択します。
別の差分タブが開き、比較の結果が表示されます。2 つのフレームグラフが組み合わされ、違いが赤と緑で表示されます。
フレームの一部が緑色である場合は、このプロファイラーの実行中に対応するメソッドが高速化されたことを意味します。赤い色は、対応する方法が遅くなったことを意味します。
呼び出しツリー
呼び出しツリータブは、サンプリングされたデータをツリーのような構造に編成します。
各メソッドについて、タブには次の情報が表示されます。
合計実行時間または親の実行時間を共有します
合計実行時間
再帰呼び出し
デフォルトでは、パーセンテージは合計実行時間に比例します。親フレームを基準にして数値を表示するように選択できます。
合計と親の間でパーセンテージを切り替える
をクリックし、合計時間の割合を表示または親の割合を表示を選択します。
仮に: 特定の方法に焦点を当てる
PyCharm を使用すると、呼び出しツリー内の特定のノードとサブツリーを調べることができます。特定のメソッドを除外したり、その逆に、現時点で関心のあるノードのみに焦点を当てることもできます。
呼び出しツリータブで必要なノードを右クリックし、次のオプションのいずれかを選択して、専用のタブで結果を開きます。
サブツリーにフォーカス : 選択したメソッド呼び出しのみを表示します。親メソッドのサンプルカウンターには、選択したサブツリーで費やされた時間のみが表示されます。
呼び出しにフォーカス : 選択したメソッドとそれを呼び出すメソッドを表示します。このオプションを有効にすると、すべてのフレームに、選択したメソッドで費やされた時間のみが表示されます。
サブツリーを除外 : 選択したメソッド呼び出しを無視します。
呼び出しを除外 : 選択したメソッドへのすべての呼び出しを無視します。
メソッドリスト
メソッドリストは、プロファイルデータ内のすべてのメソッドを収集し、累積サンプル時間でソートします。このリストのすべてのアイテムには、いくつかのビューがあります。
バックトレースは、呼び出し元の階層を示しています。このビューを使用して、選択したメソッドを呼び出すメソッドをトレースします。
マージされた呼び出し先は、呼び出し階層の下位にあるメソッドを要約した呼び出しツリーです。
呼び出し先のリストは、呼び出し階層の下位にあるメソッドを要約したメソッドリストです。
統計
統計タブでは、プロファイリングの結果をインスペクションできます。
項目 | 説明 |
---|---|
名前 | 関数の名前。 |
呼び出し回数 | 選択した関数の呼び出し数。 |
時間 | 選択された関数の実行時間と、この関数によって呼び出された関数によるすべての時間。このコールで費やされた時間のパーセンテージは、括弧内のすべてのコールで費やされた時間に関連しています。 |
自身時間 | 選択した関数の実行時間を指定します。この呼び出しで費やされた時間の割合を括弧で表したものです。 |
ソースコードに移動
特定の関数のソースコードに移動するには、統計タブの対応するエントリを右クリックし、コンテキストメニューから を選択します。
関数のソースコードがエディターに表示されます。
呼び出しグラフ
呼び出しグラフのカラーコードに注意してください。赤でマークされた機能はより多くの時間を消費し、最も速い機能は緑です。
ツールバーボタンを使用して、グラフを操作します。
項目
説明
このアイコンをクリックすると、ダイアグラムの縮尺が拡大されます。あるいは、NumPad+ を押します。
このアイコンをクリックすると、ダイアグラムの縮尺が縮小されます。あるいは、NumPad- を押します。
このアイコンをクリックすると、ダイアグラムの実際のサイズに戻ります。
このアイコンをクリックして、内容を現在のダイアグラムのサイズに合わせます。
このアイコンをクリックして、ダイアグラムのコンテキストメニューのレイアウトノードから選択した現在のレイアウトを適用します。
このアイコンをクリックして、ダイアグラムをウィンドウの端に合わせて拡大縮小します。
このアイコンをクリックして、ダイアグラムをクリップボードにコピーします。
このアイコンをクリックし、マウスでダイアグラムの領域を選択します。選択した領域がクリップボードにコピーされます。
このアイコンをクリックすると、現在のダイアグラムが PNG 形式でエクスポートされます。
このアイコンをクリックしてダイアグラムを印刷します。
関連ページ:
プロファイラーを使用してコードを最適化する
プロファイリングは、大量の実行時データを処理し、プロセス内で何が起こっているかを把握できる実行時分析の一種です。収集されたデータは、CPU 使用率、メモリ割り当ての割合、スレッドのアクティビティなど、プログラム操作のさまざまな側面に関連しています。PyCharm を使用すると、Python プロファイラーを接続しながら現在の実行 / デバッグ構成を実行できます。PyCharm にバンドルされているダイアグラムプラグインを有効にする必要があることに注意してください。インタープリターに yappi プロ...
Cython のサポート
前提条件:PyCharm は、すぐに利用できる最初の Cython サポートを提供します。PyCharm は .pyx、.pxd、.pxi ファイルを認識し、編集できるようにします。パッケージを使用して、これらのファイルを .so ファイルにコンパイルすることもできます。Cython のサポート:Cython ファイルはアイコンでマークされています。Cython のサポートは次のとおりです。コーディング支援: エラーと構文のハイライト。キーワード、構造体のフィールド、拡張タイプの属性については、コード補完...