2016-10-29 5 views
1

내 PHP 응용 프로그램의 프로필을 만들려고하지만 qcachegrind의 지시기를 이해할 수 없습니다. 스크린 샷 : enter image description hereqcachegrind 결과를 이해하는 방법?

해당 기능을 호출합니다. 그러나 무슨 뜻 열을 포함합니다. 자기? 어떻게하면 리팩토링 할 필요가있는 메소드를 인식해야합니까?

답변

4

"self"는 내부에 포함 (및 다른 함수 호출)없이 함수를 실행하는 시간이고 "포함"은 함수를 실행하는 전체 시간 (파일, 함수 등 포함)입니다. 예를 보자

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

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

기능 자기 시간은 약 0이됩니다하지만 B와 C를 호출하기 때문에, 그 시간이 가장 높은이어야하며, b와 c를위한 시간이 포함됩니다 포함한다. 비슷하게 b self와 include time은 어떤 함수도 호출하지 않는 것과 같을 것이다. 반면 c self는 대략 0이고 d와 거의 같은 시간을 포함합니다.

qcachegrind를 보면 코드가 PDO 호출에 많은 시간을 소비하고 있습니다. SQL 쿼리와 관련된 것. 또한 SQL 쿼리를 캡처하고 프로파일을 작성하여 자신이 수행하는 작업을 확인하십시오.

출력에서 ​​흥미로운 점은 함수가 호출 된 횟수입니다. 함수는 성능면에서 효율적 일 수 있지만 호출 횟수가 너무 많으면 더할 것입니다. 너무 많은 SQL 쿼리를 작성하는 경우 코드를 확인하십시오.

+0

"self"는 실행 시간입니다. 내부에 포함되지 않은 함수와 "include"는 함수를 실행하는 전체 시간 (파일, 함수 등 포함)입니다. 맞습니까? – webcitron

+0

예. 귀하의 제안에 따라 답변을 업데이트했습니다. –