PHP 计算执行时间,有时会返回负值


PHP calculating execution time, sometimes return negative value

使用以下脚本计算执行时间:

$ php -r "'$tt=microtime();for('$i=0;'$i<111120;'$i++) '
  echo hash('crc32', microtime()).PHP_EOL;echo 'Time took: ' '
   . (microtime()-'$tt).PHP_EOL;"

结果(多个):

...所用时间:0.266269...所用时间:-0.725037...所用时间:0.264577...所用时间:0.655573...花费的时间:-0.389367...所用时间:-0.451503...所用时间:0.50867

为什么时间计算有时返回负值?

传递第二个参数:

microtime(true);

否则,你会得到一个字符串而不是一个真正的浮点值,这会导致意外/错误的结果:

默认情况下,microtime() 返回一个格式为 "msec sec" 的字符串,其中 sec 是当前时间,以秒数为单位,自 Unix 纪元(格林威治标准时间 1970 年 1 月 1 日 0:00:00),msec 是 自 SEC 以来经过的微秒,以秒为单位表示。

— php.net/microtime

(强调我的)

例子:

microtime():     0.93146600 1382611111   (string value)
microtime(true): 1382611111.93146600     (float, printed as a string in this case)