【发布时间】:2018-04-10 10:35:36
【问题描述】:
我在使用计时器时注意到的一点是,累积时间似乎比正常时间进一步增加。
这是一个简单的例子:
$time = microtime(true);
for (;;) {
time_nanosleep(2, 0);
var_dump(microtime(true) - $time);
}
现在我预计var_dump 的计算输出会增加两秒,它的精度很接近,但奇怪的是 4 点精度也增加了:
float(2.0001111030579)
float(4.000256061554)
float(6.0003678798676)
float(8.0004849433899)
float(10.000600099564)
float(12.000720024109)
float(14.000848054886)
float(16.000955104828)
float(18.001054048538)
float(20.001163005829)
float(22.001266002655)
float(24.001379013062)
float(26.001489877701)
float(28.001588106155)
float(30.001708984375)
float(32.001836061478)
在我看来,经过一段较长的时间后,计数会增加一秒,鉴于我每两秒检查一次系统时间,这似乎是不可能的。
可能有一个合理的解释,这个计时器实际上是准确的,但我不知道它是什么。谁能解释一下?
【问题讨论】:
-
为什么这么奇怪?每一行代码都需要时间来执行。
-
@jeroen Ye,我刚走开就意识到问题不在于时间的计算方式。我的想法是支票在某种程度上是免税的。