2009-07-11 3 views
5

Есть ли бесплатный и хороший профилировщик уровня для PHP? Я использую xdebug, и он относительно хорош, но он дает мне выходной уровень функции, и иногда трудно понять, где именно проходит все время, потраченное на выполнение функции.Есть ли бесплатный и хороший профилировщик уровня для PHP?

ответ

1

Не бесплатно, но SD PHP Profiler предоставляет информацию об относительных затратах каждого блока PHP коды, а не только функций:

+0

Я не могу придумать более сложный интерфейс :) – vava

+0

попытался выполнить это предложение. оценочная копия настолько искалечена, что ее бесполезно - 3 файла кода не более 1000 строк каждый ... программы полагаются на переменные окружения, а установщик не устанавливает их правильно - почему бы просто не выписать файл конфигурации ...? действительно разочаровывает, потому что результат выглядит действительно хорошо на скриншоте, он просто обернут очень сложным пользовательским интерфейсом. многие языки поддерживаются, но учитывается только одна парадигма перспективы разработчика с учетом пользовательского интерфейса. – gazarsgo

+0

@gazarsgo: Переменные среды, насколько нам известно, установлены правильно. Мы были бы счастливы (?) Принять обратную связь, рассказывая нам, какую версию ОС вы использовали, и почему вы считаете, что переменные среды ошибочны. В более поздних версиях Windows вам необходимо выйти из системы и входить в систему для изменения параметров среды (спасибо за это, Microsoft). Вы попробовали запустить пример? –

0

Я не знаю, есть ли такой профайлер.
Если возможно, обходным путем может быть разделение длинных функций, которые определены как узкие места для небольших функций. Не только это хорошая практика программирования (хотя не всегда легко обеспечить соблюдение, я считаю), но это может позволить точно определить проблему.

0

Существует bytekit, который является дизассемблером кода операции. Это даст вам подробное представление о том, что происходит. Кроме того, вы можете использовать отладчик уровня C, например gdb. Это дает вам еще более пристальный взгляд, поскольку вы можете отлаживать функции C-уровня.

0

Я относительно уверен, что получил линейный выход с Xdebug и KCacheGrind. Возможно, он сообщил об этом для этих строк с вызовами функций, исходя из того, как долго эта функция выполнялась, но в любом случае.

+0

Нет, он может показать вам исходный код и информацию о том, сколько времени вызывается из этой строки. Но это не помогает в линиях, где используются только языковые конструкции. – vava

1

Платформа Zend предоставит вам более точную информацию профилирования. Это то, что с помощью webgrind и zend studio/Eclipse профилировщик для вас.

1

Я использую микропоры(), и он мне хорошо подходит.