11

我有这个代码:

$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()得到了同样类型的结果。

你能解释一下为什么吗?

4

2 回答 2

18

函数调用和变量赋值等仍然需要额外的开销。它至少是你睡眠的时间长度,可能多几毫秒。

于 2011-12-04T23:48:44.503 回答
5

这可能是错误的,但我记得很久以前有人告诉我,电脑上的时间很难衡量。

考虑到调用这些函数sleep()并且microtime()都需要一些时间,它总是会出现。做任何不属于计时过程的事情都会产生开销。

于 2011-12-04T23:50:24.507 回答