2016-10-29 10 views
1

Я пытаюсь профилировать приложение php, но не могу понять индикаторы в qcachegrind. после чего снимок экрана: enter image description hereКак понять результаты qcachegrind?

его функции звонки конечно. но что означает столбцы, в т.ч. и себя? как я должен здесь признать, что какой-то метод необходим для рефакторинга?

ответ

4

«self» - это время выполнения функции БЕЗ любых включений (и других вызовов функций) внутри нее, а «включить» - это все время выполнения функции (включая файлы, функцию и т. Д.). Возьмем пример:

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

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

Функция времени само будет примерно равным нулю, но так как она называет бив его включают время будет высоким и содержит время для а, Ь и с. Точно так же b self и include time будут такими же, как если бы они не вызывали какую-либо функцию. В то время как c self будет приблизительно 0 и включает время, приблизительно равное d, включает время.

Глядя на ваш qcachegrind, ваш код тратит много времени на вызовы PDO. Что-то связано с запросом SQL. Вы также хотите записать свои SQL-запросы и просмотреть их, чтобы посмотреть, как они работают.

Также интересно в выводе количество раз, когда вызывается функция. Функция может быть эффективной с точки зрения производительности, но если она называется слишком много раз, она будет складываться. Проверьте, не вызывает ли код слишком много запросов SQL.

+0

Итак, «self» - это время выполнения функций БЕЗ любых включений внутри него, а «include» - это все время выполнения функции (включая файлы, функцию и т. Д.), Правильно? – webcitron

+0

есть. Я обновил ответ, чтобы разъяснить его в соответствии с вашим предложением. –

 Смежные вопросы

  • Нет связанных вопросов^_^