我尝试过这样使用它:
$now = microtime(true);
// cpu expensive code here
echo microtime(true) - $now;
但无论我在这些陈述之间输入什么代码,我都会得到几乎相同的结果,例如3.0994415283203E-6
我做错了什么?
答案 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秒。看看这是否会改变你的时间。