Есть ли способ измерить время разбора в PHP? - PullRequest
7 голосов
/ 09 ноября 2008

Оптимизация кода PHP с помощью сравнительного анализа во время выполнения проста. Отслеживайте время $ start и $ end с помощью microtime () вокруг блока кода - я не ищу ответ, который включает использование microtime ().

То, что я хотел бы сделать, - это измерить время, необходимое PHP для подготовки к запуску своего кода - время разбора кода / кода операции-кода-дерева. Я рассуждаю так: хотя легко включить () каждый класс, который вам может нужен для каждой страницы вашего сайта, загрузка ЦП не может быть "бесплатной". Я хотел бы знать, насколько «дорогим» является время разбора.

Я предполагаю, что кэш кода операции, такой как APC, не часть сценария.

Буду ли я прав, что измерение времени разбора в PHP - это то, что должно происходить в mod_php?

РЕДАКТИРОВАТЬ : Если возможно, было бы полезно учесть использование $_SERVER['DOCUMENT_ROOT'] в коде. Командные решения могут занять некоторое время, чтобы сделать это (но все же будут полезными ответами).

Ответы [ 3 ]

9 голосов
/ 09 ноября 2008

Да. Есть.

<?php return; rest of the code ?>

или

<?php whole code; $%^parse erorr!@! ?>

и затем сравните время запуска пустого скрипта

time php empty.php

со временем, которое требуется для запуска (или сбоя) обычного скрипта с дополнениями, о которых я упоминал выше:

time php test.php

Я использовал этот метод для больших файлов, а PHP5.3 на Core2Duo 2,4 ГГц может анализировать от 1,5 до 4,5 МБ PHP-кода в секунду (конечно, это очень сильно зависит от сложности кода).

2 голосов
/ 09 ноября 2008

Для детального анализа, который вы ищете, кажется, что реализация Xdebug (http://xdebug.org/) даст вам наибольшую информацию без необходимости разбивать ваш код на сегментированные куски.

1 голос
/ 09 ноября 2008

Одним из методов может быть определение времени выполнения скрипта из командной строки.

В Linux, например:

$ time php5 -r 'echo "Hello world";'
Hello world
real    0m1.565s
user    0m0.036s
sys     0m0.024s

Помогает ли это вообще? Возможно, это полезно для определения относительного времени между различными сценариями, но может не указывать время, затраченное на модуль Apache

...