Как читать пользовательский интерфейс qcachegrind?

Я использую qcachegrind для просмотра журнала профиля, созданного с помощью Xdebug. Я могу просмотреть файл в порядке, но я не знаю, на что я смотрю.

Я попробовал Google, но я просто продолжаю получать учебные руководства по установке, ничего о том, как понять дисплей.

  • Что показывает нижеприведенный qcachegrind дисплей моего приложения
  • Есть ли что-нибудь еще, что я могу просмотреть из этого файла, или это все доступные данные?

(пожалуйста, откройте изображение на новой вкладке для лучшего обзора)


введите описание изображения здесь

Ответ 1

Такие инструменты, как qcachegrind и kcachegrind, визуализируют вывод профилировщика Xdebug PHP. Вывод профилировщика представляет собой практически журнал всех вызовов функций PHP с соответствующим временем начала, временем выполнения и иерархией.

Типичный вид показан на следующем рисунке:

Приложение Laravel

С левой стороны находится "Flat Profile". В нем перечислены все индивидуальные вызовы функций с самого большого времени, затрачиваемого на меньшее время. "Incl". столбец показывает время, затрачиваемое функцией, включая вызываемые. Столбец "Я" показывает время, затрачиваемое функцией, исключая вызываемых лиц. Столбцы "Called" и "Function" показывают соответственно количество раз, когда вызывается функция, и имя (плюс пространство имен) этой функции.

С правой стороны доступны различные виды визуализации абонентов и вызываемых абонентов. Вызывающие и вызываемые абоненты соответствуют функции, выбранной с левой стороны.

В моем скриншоте вверху открывается "Callee Map". Каждый прямоугольник является вызовом функции внутри выбранной функции (вызываемого абонента), и каждый прямоугольник внутри является вызываемым абонентом. Размер соответствует относительной "Incl". время.

Внизу, в представлении "Все каллы" отображаются вызовы выбранного порядка функций по любому свойству, которое вы предпочитаете.

Ниже представлен более подробный вид:

Callers and callees

Это функция функции базы данных Laravel, отсортированная по времени "Я". Вы четко видите, как связаны разные вызовы функций и какая функция занимает больше всего времени: PDOStatement:: execute. Это не удивительно, поскольку это функция, которая подключается к внешней базе данных, запрашивает ее и ждет результата.

Вернуться к исходному снимку экрана. Он сообщает вам, что ваше приложение потратило много времени (много времени) на функцию PHP session_start. Это показано самосохранением 99,8%.