3

Calculating execution time using script below:

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

Results (multiple):

...
Time took: 0.266269
...
Time took: -0.725037
...
Time took: 0.264577
...
Time took: 0.655573
...
Time took: -0.389367
...
Time took: -0.451503
...
Time took: 0.50867

Why time calculation some times returns negative value?

4

1 回答 1

5

传递第二个参数:

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)
于 2013-10-24T10:37:58.787 回答