Как отслеживать время выполнения каждой строки / блока строк / методов в PHP?

Есть ли лучшая практика (IDE-based?), Скрипт PHP / bash или что-то еще

  • получить время выполнения строки
  • получить время выполнения блока строк (например, строки с 17 по 42)
  • получить время выполнения определенной функции или метода

в PHP? В настоящее время я придерживаюсь самостоятельных решений, использующих microtime() , но это грязный, неуправляемый и медленный способ сделать это. Меня особенно интересуют решения с основными PHP-IDE, такими как Eclipse, Netbeans, PHPStorm и VIM. Идеальное решение будет инструментом, который отслеживает все приложение и обеспечивает отслеживание времени выполнения для каждой строки, каждого метода и каждого настраиваемого блока действий.

Я получу 50 бонусов за хороший ответ.

Это то, что вы ищете: http://xdebug.org/docs/profiler . Вы можете настроить netbeans для присоединения к процессу php, а затем запускать скрипты шаг за шагом, следить за текущим содержимым переменных и анализировать его время работы.

Просто добавьте dll в другое расширение php, настройте php ini:

 ; xdebug zend_extension = "C:\php\v5.4\ext\php_xdebug-2.2.3-5.4-vc9-nts.dll" xdebug.remote_enable=on ;xdebug.remote_log="/var/log/xdebug.log" xdebug.remote_host=localhost xdebug.remote_handler=dbgp xdebug.remote_port=9000 xdebug.profiler_enable=1 xdebug.profiler_output_dir="C:\dev\profilling\" 

Настройка Netbeans:

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

Затем нажмите Ctrl + F5 в netbeans (отладка). Чем вы можете запустить скрипт шаг за шагом и посмотреть текущие значения переменных:

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

Чтобы просмотреть сгенерированный журнал профилировщиков, используйте http://sourceforge.net/projects/precompiledbin/ или http://sourceforge.net/projects/wincachegrind/ в Windows или http://kcachegrind.sourceforge.net/html/Home.html. для linux.