Как я могу проверить определенные точки кода в PHP? Я могу использовать таймеры для вычисления различий, я просто не уверен, что это лучшее решение там.
Измерение производительности PHP
Ответ 1
Посмотрите XDebug Profiler, чтобы сравнить производительность и многое другое.
Xdebug Profiler - мощный инструмент что дает вам возможность анализировать ваш PHP-код и определить узких мест или, как правило, части вашего кода медленны и могут используйте ускорение скорости.
Ответ 2
Вы можете использовать profiler, как тот, который встроен в Xdebug.
Ответ 3
XDebug классный, но если вы не хотите устанавливать эту библиотеку, вы можете попробовать следующее:
То, что я использую, чтобы найти возможные шеи бутылки, это:
$benchmark_start = microtime(true);
// Code goes here
$benchmark_stop = microtime(true);
$benchmark_total = $benchmark_stop - $benchmark_start;
echo "The script took ". $benchmark_total." seconds";
Ответ 4
немного более сложный пример ручного профилирования с использованием таймеров
работает идеально для меня, особенно когда меня просят разобраться на каком-то живом сервере с FTP-доступом.
нет необходимости упоминать, что профилирование является более важным (и полезным) на живом сервере, а не на тепличном компьютере разработчиков.
$TIMER['start']=microtime(TRUE);
// some code
$query="SELECT ...";
$TIMER['before q']=microtime(TRUE);
$res=mysql_query($query);
$TIMER['after q']=microtime(TRUE);
while ($row = mysql_fetch_array($res)) {
// some code
}
$TIMER['array filled']=microtime(TRUE);
// some code
$TIMER['pagination']=microtime(TRUE);
if ('127.0.0.1' === $_SERVER['REMOTE_ADDR']) { //I set my IP here
echo "<table border=1><tr><td>name</td><td>so far</td><td>delta</td><td>per cent</td></tr>";
reset($TIMER);
$start=$prev=current($TIMER);
$total=end($TIMER)-$start;
foreach($TIMER as $name => $value) {
$sofar=round($value-$start,3);
$delta=round($value-$prev,3);
$percent=round($delta/$total*100);
echo "<tr><td>$name</td><td>$sofar</td><td>$delta</td><td>$percent</td></tr>";
$prev=$value;
}
echo "</table><>";
}