我很想知道是否有更好的时间操作方法。依靠计时器,因为看起来微缩时间..或任何其他读取操作系统时间的方法显然不会给出如此好的估计。 我很想知道一般来说,基于Linux的操作系统中的计时操作的精确度是多少,例如Red Hat Linux。
现在更具体一点,我最近编写了一个算法并尝试比较它所花费的时间。我的PHP代码工作原理如下:
$start = microtime(true);
$result = myTimeConsumingProcess();
$end= microtime(true);
$timeinMiliSec = 1000.0*($end - $start);
事实证明,有时这个过程需要0毫秒,并且在不同的执行情况下,使用完全相同的数据需要9.9xxxx毫秒。
我可以想象对此的解释是使用定时器中断来测量时间。如果执行开始并在下一个定时器中断更新操作系统的时间之前完成,我们必然会得到0秒作为差异。
从我早期的DOS时代开始,每隔18.19 ms调用一次定时器中断。看起来情况不再是更好的机器和升级的操作系统,我们现在运行的计时器比这更快。