Ответ 1
Такие инструменты, как qcachegrind и kcachegrind, визуализируют вывод профилировщика Xdebug PHP. Вывод профилировщика представляет собой практически журнал всех вызовов функций PHP с соответствующим временем начала, временем выполнения и иерархией.
Типичный вид показан на следующем рисунке:
С левой стороны находится "Flat Profile". В нем перечислены все индивидуальные вызовы функций с самого большого времени, затрачиваемого на меньшее время. "Incl". столбец показывает время, затрачиваемое функцией, включая вызываемые. Столбец "Я" показывает время, затрачиваемое функцией, исключая вызываемых лиц. Столбцы "Called" и "Function" показывают соответственно количество раз, когда вызывается функция, и имя (плюс пространство имен) этой функции.
С правой стороны доступны различные виды визуализации абонентов и вызываемых абонентов. Вызывающие и вызываемые абоненты соответствуют функции, выбранной с левой стороны.
В моем скриншоте вверху открывается "Callee Map". Каждый прямоугольник является вызовом функции внутри выбранной функции (вызываемого абонента), и каждый прямоугольник внутри является вызываемым абонентом. Размер соответствует относительной "Incl". время.
Внизу, в представлении "Все каллы" отображаются вызовы выбранного порядка функций по любому свойству, которое вы предпочитаете.
Ниже представлен более подробный вид:
Это функция функции базы данных Laravel, отсортированная по времени "Я". Вы четко видите, как связаны разные вызовы функций и какая функция занимает больше всего времени: PDOStatement:: execute. Это не удивительно, поскольку это функция, которая подключается к внешней базе данных, запрашивает ее и ждет результата.
Вернуться к исходному снимку экрана. Он сообщает вам, что ваше приложение потратило много времени (много времени) на функцию PHP session_start
. Это показано самосохранением 99,8%.