Измерение производительности PHP

Как я могу сравнить определенных частей кода в PHP? Я могу использовать таймеры для вычисления различий, я просто не уверен, является ли это лучшее решение там.

10
задан David Weng 14 August 2010 в 07:30
поделиться

4 ответа

Взгляните на XDebug Profiler , чтобы оценить производительность и многое другое.

Xdebug's Profiler - мощный инструмент что дает вам возможность анализировать ваш код PHP и определить узкие места или посмотреть, какие части вашего кода медленные и могут используйте повышение скорости.

7
ответ дан 4 December 2019 в 00:22
поделиться

Вы можете использовать профилировщик , подобный встроенному в Xdebug .

3
ответ дан 4 December 2019 в 00:22
поделиться

немного более сложный пример ручного профилирования с использованием таймеров
отлично работает для меня, особенно когда меня просят разобраться на каком-то живом сервере с доступом только по 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><>";
}
1
ответ дан 4 December 2019 в 00:22
поделиться

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";
1
ответ дан 4 December 2019 в 00:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: