PHP性能度量

PHP性能度量,php,performance,benchmarking,Php,Performance,Benchmarking,如何在PHP中对某些代码进行基准测试?我可以使用计时器来计算差异,我只是不确定它是否是最好的解决方案。您可以使用内置的计时器。查看性能基准测试等 Xdebug的Profiler是一个强大的工具 这让你有分析的能力 您的PHP代码并确定 瓶颈还是一般看哪个 你的部分代码很慢,可能会出错 使用速度提升 XDebug很酷,但如果不想安装此库,可以尝试以下方法: 我用来定位可能的瓶颈的是: $benchmark_start = microtime(true); // Code goes here $be

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

您可以使用内置的计时器。

查看性能基准测试等

Xdebug的Profiler是一个强大的工具 这让你有分析的能力 您的PHP代码并确定 瓶颈还是一般看哪个 你的部分代码很慢,可能会出错 使用速度提升


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";

一个更复杂的使用计时器的手动评测示例
非常适合我,尤其是当我被要求在一些仅具有FTP访问权限的实时服务器上进行排序时。
不用说,评测在live server上比在hothouse开发者的PC上更重要(也更有用)

$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><>";
}
$TIMER['start']=微时间(TRUE);
//一些代码
$query=“选择…”;
$TIMER['before q']=微时间(TRUE);
$res=mysql\u query($query);
$TIMER['after q']=微时间(TRUE);
while($row=mysql\u fetch\u数组($res)){
//一些代码
}
$TIMER['array filled']=微时间(TRUE);
//一些代码
$TIMER['pagination']=微时间(TRUE);
如果('127.0.0.1'==$\u SERVER['REMOTE\u ADDR']){//我在这里设置了我的IP
呼应“法德尔的名字”;
重置($计时器);
$start=$prev=当前($TIMER);
$total=结束($TIMER)-$start;
foreach($name=>$value的计时器){
$sofar=圆形($value-$start,3);
$delta=round($value-$prev,3);
$percent=四舍五入($delta/$total*100);
echo“$name$sofar$delta$percent”;
$prev=$value;
}
回声“;
}

我们并非都生活在最好的世界里。计时器是非常有用的和高度便携的。查找瓶颈需要几分钟时间。如果使用Zend Studio,则需要Zend调试器。如果您在Linux上,请使用kcachegrind可视化生成的配置文件。我不认为这是复杂的。