我尝试像这样使用它:
$now = microtime(true);
// cpu expensive code here
echo microtime(true) - $now;
但无论我在这些语句之间输入什么代码,我总是得到几乎相同的结果,比如3.0994415283203E-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";
3.0994415283203E-6
等于0.0000030994415283203
。
告诉您将E-6
小数点左移六位。 E+6
将意味着相反。正如@deceze 提到的,这被称为科学记数法。
如果您在进行性能测试,最好将代码放入 100000 左右的迭代循环中,然后将结果时间除以 100000。这样可以获得更准确的平均值。
您没有做错任何事情,只是您正在计时的代码实际上只需要几分之一秒即可运行。
如果你想证明它,sleep
几秒钟。
看起来您在使用microtime()
时没有可选参数,但您说是,所以我不是 100% 确定。
这个输出是什么:
$now = microtime(true);
sleep(1);
echo microtime(true) - $now;
PHP 的速度总是让我惊讶。您的代码似乎是正确的。也许您的代码实际上只需要 3 毫秒。
您可以尝试制作一个长循环,如下所示:
$x=0;
while ($x<1000000)
{
$x++;
}
在计时器中添加此代码。对我来说,循环 100 万次通常需要大约 1/2 秒。看看这是否会改变你的时间。