1

我尝试像这样使用它:

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

但无论我在这些语句之间输入什么代码,我总是得到几乎相同的结果,比如3.0994415283203E-6

我究竟做错了什么?

4

5 回答 5

7

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

$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";
于 2011-01-25T01:34:30.093 回答
3

3.0994415283203E-6等于0.0000030994415283203

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

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

于 2011-01-25T01:31:44.343 回答
1

您没有做错任何事情,只是您正在计时的代码实际上只需要几分之一秒即可运行。

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

于 2011-01-25T01:33:57.557 回答
1

看起来您在使用microtime()时没有可选参数,但您说是,所以我不是 100% 确定。

这个输出是什么:

$now = microtime(true);
sleep(1);
echo microtime(true) - $now;
于 2011-01-25T01:35:23.790 回答
0

PHP 的速度总是让我惊讶。您的代码似乎是正确的。也许您的代码实际上只需要 3 毫秒。

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

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

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

于 2011-01-25T01:35:27.997 回答