PHP - 使用microtime()来测量函数/代码块的CPU使用率

时间:2011-01-25 01:29:42

标签: php cpu-usage microtime

我尝试过这样使用它:

$now = microtime(true); 
// cpu expensive code here
echo microtime(true) - $now;   

但无论我在这些陈述之间输入什么代码,我都会得到几乎相同的结果,例如3.0994415283203E-6

我做错了什么?

5 个答案:

答案 0 :(得分:6)

更好的解决方案。多次运行代码以平均操作:

$runs = 500;

$start = microtime(true);
for ($i = 0; $i < $runs; $i++) {
    //cpu expensive code here
}
$end = microtime(true);
$elapsed = number_format($end - $start, 4);
$one = number_format(($end - $start) / 500, 7);
echo "500 runs in $elapsed seconds, average of $one seconds per call";

答案 1 :(得分:3)

3.0994415283203E-6等同于0.0000030994415283203

E-6告诉您将小数点向左移动六位。 E+6意味着相反的意思。正如@deceze所提到的,这被称为科学记谱法。

如果您正在进行性能测试,最好将代码放入100000左右的迭代循环中,然后将得到的时间除以100000.这样您就可以获得更准确的平均值。

答案 2 :(得分:1)

你没有做错任何事情,只是你计时的代码真的只需要几分之一秒才能运行。

如果你想证明它,sleep几秒钟。

答案 3 :(得分:1)

看起来你在没有可选参数的情况下使用microtime(),但你说你是,所以我不是百分百肯定。

这是什么输出:

$now = microtime(true);
sleep(1);
echo microtime(true) - $now;

答案 4 :(得分:0)

PHP总是让我惊讶它的速度有多快。你的代码似乎是正确的。也许你的代码实际上只花了3毫秒。

您可以尝试制作一个长循环,如下所示:

$x=0;
while ($x<1000000)
  {
  $x++;
  }

在计时器中添加此代码。对我来说,循环100万次通常需要大约1/2秒。看看这是否会改变你的时间。