Я хотел бы найти способ определить, сколько времени требуется каждой функции в PHP и каждому файлу в PHP. У меня есть старое устаревшее приложение PHP, в котором я пытаюсь найти "грубые пятна", и поэтому я хотел бы объективно определить, какие процедуры и страницы загружаются очень долго.
Существуют ли какие-либо готовые инструменты, позволяющие это сделать, или я застрял в использовании microtime и создаю собственный фреймворк профилирования?






взгляните на xdebug, который позволяет углубленное профилирование. И вот объяснение о том, как использовать xdebug.
Xdebug's Profiler is a powerful tool that gives you the ability to analyze your PHP code and determine bottlenecks or generally see which parts of your code are slow and could use a speed boost. The profiler in Xdebug 2 outputs profiling information in the form of a cachegrind compatible file.
Престижность SchizoDuckie за упоминаниеWebgrind. Я впервые слышу об этом. Очень полезно (+1).
В противном случае вы можете использовать kcachegrind в Linux или его меньшую производную wincachegrind. Оба эти приложения будут читать выходные файлы профилировщика xdebug и суммировать их для вашего удовольствия.
Если вы устанавливаете расширение xdebug, вы можете настроить его для экспорта профилей выполнения, которые вы можете прочитать в WinCacheGrind (в Windows). Я не могу вспомнить название приложения, которое читает файлы в Linux.
Однажды я видел скринкаст для Zend Core. Выглядит неплохо, но на самом деле стоит денег, не знаю, для вас ли это проблема.
Функции профилирования xdebug довольно хороши. Если у вас есть возможность сохранить вывод в формате valgrind, вы можете использовать что-то вроде KCachegrind или Wincachegrind для просмотра графа вызовов и, если вы визуальный человек, легче разобраться в том, что происходит.
XDebug хорош, но его не так просто использовать или настроить IMO.
Профилировщик, встроенный в Zend Studio, очень прост в использовании. Вы просто нажимаете кнопку на панели инструментов браузера, и БАМ становится вашим профилем кода. Возможно, он не такой глубокий, как дамп CacheGrind, но для меня он всегда был достаточно хорош.
Вам также необходимо настроить Zend Platform, но это просто и бесплатно для использования в разработке - вам все равно придется платить за лицензию Zend Studio.
Спустя три с половиной года я сейчас с собой не согласен. Facebook предоставил открытый исходный код инструмента профилирования под названием XHProf, который действительно приятный, легкий и достаточно простой в настройке и запуске.
На прошлой неделе я действительно проделал некоторую работу по оптимизации. XDebug действительно правильный путь.
Просто включите его как расширение (по какой-то причине он не будет работать с ze_extension на моем компьютере с Windows), настройте свой php.ini с помощью xdebug.profiler_enable_trigger = On и вызовите свои обычные URL-адреса с XDEBUG_PROFILE = 1 либо как получение, либо как сообщение переменная для профилирования этого самого запроса. Нет ничего проще!
Кроме того, я действительно могу порекомендовать webgrind, веб-(php) проект Google Summer Of Code, который может читать и анализировать ваши выходные файлы отладки!
Альтернатива webgrind на компьютерах с Windows: Wincachegrind (настольное приложение).
Самым простым решением является использование Zend Profiler, для использования Zend Platform не требуется, вы можете запускать его прямо из браузера, он довольно точен и имеет большинство необходимых вам функций, и он интегрирован в Zend Studio.
Помимо мощных возможностей отладки в реальном времени, PhpED от NuSphere (www.nusphere.com) имеет встроенный профилировщик, который можно запустить одним щелчком мыши из среды IDE.
Вот хороший совет.
Когда вы используете XDebug для профилирования вашего PHP, настройте profiler_trigger и используйте его в букмарклете для запуска профилировщика XDebug;)
javascript:if (document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';}
возможный дубликат Самый простой способ профилировать PHP-скрипт