PHP性能测试

10

我该如何在PHP中基准测试某些代码?我可以使用计时器来计算差异,但我不确定这是否是最好的解决方案。


我们都生活在不是最好的世界里。计时器非常实用且高度可移植。只需要几分钟就可以找到瓶颈所在。 - Your Common Sense
4个回答

7

请查看XDebug Profiler来评估性能等方面。

Xdebug的分析器是一个强大的工具,它可以让您分析PHP代码并确定瓶颈或通常查看哪些部分的代码缓慢并且需要加速。


如果您正在使用Linux,则可以使用kcachegrind来可视化生成的分析文件。 - John Carter

3

1
如果使用Zend Studio,则使用Xdebug或Zend Debugger。 - Gordon

1

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
一个更为复杂的手动分析计时器的例子,对我来说非常完美,特别是当我只能通过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><>";
}

我不会说这很复杂。 - raveren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接