我有这段代码:
$time_sample[] = microtime(true); //start
sleep(1);
$time_sample[] = microtime(true); //time 1
sleep(2);
$time_sample[] = microtime(true); //time 2
sleep(3);
$time_sample[] = microtime(true); //time 3
sleep(4);
$time_sample[] = microtime(true); //time 4
脚本输出:
Time 1: 1.001217 seconds.
Time 2: 2.002094 seconds.
Time 3: 3.003023 seconds.
Time 4: 4.004211 seconds.
基于此,为什么sleep(1)
不是1.000000秒,sleep(2)
2.00000秒等等?
我使用usleep()
进行了相同的测试,得到了相同类型的结果。
你能告诉我为什么吗?
答案 0 :(得分:18)
对于函数调用和变量赋值等,它仍然需要额外的开销。它将至少是您睡眠的时间长度,可能还要几毫秒。
答案 1 :(得分:5)
这可能是错的,但我记得很久以前有人告诉我计算机上的时间很难衡量。
考虑到调用函数sleep()
和microtime()
都需要一些时间,它总是会被淘汰。在做任何不属于计时过程的事情上都有开销。