使用microtime()进行PHP分析:负时间?

43

我使用microtime()进行非常简单的性能分析,像这样:

$now = microtime();
for (...) {
    // do something
    echo microtime() - $now;
    $now = microtime();
}

现在,echo语句的输出看起来完全是随机的,我预计会有波动,但是我没有预料到会出现负数

然而,典型的结果中包含大约三分之一的负数。我在Solaris(PHP 5.0.x)和WinVista(PHP 5.2.3)上确认了这一点。

到底发生了什么?难道我无意中发明了一个时间机器吗?


4
你已经有了!请告诉我如何控制它... - OM The Eternity
1
这也是我注意到的事情,但从未去探究过,我很好奇答案是什么 :) - ChrisR
1个回答

70
如果您希望对 microtime 返回的内容执行操作,您需要将“获取为浮点数”参数设置为 true(默认为 false)。 http://www.php.net/manual/en/function.microtime.php
$now = microtime(true);
for (...) {
    // do something
    echo microtime(true) - $now;
    $now = microtime(true);
}

2
是的,是的。有时阅读文档会有所帮助。感谢您的回答! - Boldewyn
16
补充Arkh的回答:若不使用 get_as_float 参数,microtime() 函数的返回值是一个字符串 sprintf('%f %d', $microseconds, time())。在什么情况下会有人需要这种表示方式呢? - Boldewyn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接