web-dev-qa-db-ja.com

qcachegrindのUIを読み取るにはどうすればよいですか?

qcachegrindを使用して、Xdebugによって作成されたプロファイルログを表示しています。ファイルは問題なく表示できますが、Imが何を見ているのかわかりません。

Googleを試しましたが、インストールチュートリアルを取得し続けており、表示を理解する方法については何もありません。

  1. 以下のqcachegrind表示は、私のアプリケーションについて何を教えてくれますか
  2. このファイルから表示できるものは他にありますか、それとも利用可能なすべてのデータですか?

(見やすくするために、新しいタブで画像を開いてください)


enter image description here

23
Wesley Smith

Qcachegrindやkcachegrindなどのツールは、Xdebug PHPプロファイラーの出力を視覚化します。プロファイラーの出力は、実質的にすべてのPHP関数呼び出しと対応する開始時間のログです。 、実行時間と階層。

典型的なビューを次の図に示します。

Laravel App

左側は「フラットプロファイル」です。最も時間がかかるものから最も時間がかからないものまで、すべての個々の関数呼び出しが一覧表示されます。 「含む」列には、呼び出し先を含む関数によって消費された時間が表示されます。 「自己」列には、呼び出し先を除いて関数が費やした時間が表示されます。 「呼び出された」列と「関数」列には、それぞれ、関数が呼び出された回数と、関数の名前(および名前空間)が表示されます。

右側には、発信者と着信者を視覚化するためのさまざまなビューがあります。発信者と着信者は、左側で選択した機能に対応しています。

上部のスクリーンショットでは、「CalleeMap」が開いています。各長方形は、選択した関数(呼び出し先)内の関数呼び出しであり、内部の各直腸は、呼び出し先の呼び出し先です。サイズは相対的な「含む」に対応します。時間。

下部にある[すべての呼び出し先]ビューには、選択した関数の呼び出し先が、任意のプロパティで表示されます。

より詳細なビューを以下に示します。

Callers and callees

これは、Laravelデータベース関数を「自己」時間でソートした関数です。さまざまな関数呼び出しがどのように関連し、どの関数が最も時間を費やすかが明確にわかります:PDOStatement :: execute。これは外部データベースに接続し、クエリを実行して結果を待つ関数なので、当然のことです。

元のスクリーンショットに戻ります。これは、アプリケーションがPHPのsession_start関数に多くの(かなりの)時間を費やしたことを示しています。これは、99.8%のセルフタイムで示されます。

37
Tom