2016-10-29 3 views
1

私は自分のPHPアプリケーションをプロファイルしようとしていますが、qcachegrindのインジケーターを理解できません。スクリーンショットに続いて: enter image description hereqcachegrindの結果を理解するには?

その関数を呼び出す。しかし、自己ですか?私はここでどのメソッドがリファクタリングする必要があることを認識すべきですか?

答えて

4

「自己」は、その中に任意のインクルード(および他の関数呼び出し)なしに関数を実行する時間であり、「インクルード」は関数実行の全時間(ファイル、関数などを含む)です。例を見てみましょう:

function a() 
{ 
    b(); 
    c(); 
} 

function b() { // some code } 
function c() 
{ 
    d() 
} 
function d() { // some code } 

機能セルフタイムはほぼゼロになりますが、それはbとcを呼び出しているので、その時間が最も高くかつa、b、cのための時間が含まれています含まれています。同様に、selfとincludeの時間は、関数を呼び出さない時間と同じになります。一方、c selfはほぼ0であり、dとほぼ等しい時間を含む時間を含む。

qcachegrindを見ると、あなたのコードはPDO呼び出しに多くの時間を費やしています。 SQLクエリに関連するもの。また、SQLクエリーをキャプチャして、それらがどのように動作しているかを見るためにプロファイリングする必要があります。

出力では、関数が呼び出された回数も興味深いです。関数はパフォーマンス面では効率的かもしれませんが、呼び出される回数が多すぎると、関数が合算されます。あまりにも多くのSQLクエリを作成する場合は、コードを確認してください。

+0

"self"は実行時間です。その中に任意のインクルードを含まない関数と "include"は関数の実行時間(ファイル、関数などを含む)です。 – webcitron

+0

はい。私はあなたの提案に応じて明確にするための答えを更新しました。 –

関連する問題