Объяснение php php

У меня есть этот код:

$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

Выходы script:

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(), и получился тот же тип результатов.

Не могли бы вы объяснить мне, почему?

Ответ 1

Он по-прежнему требует дополнительных накладных расходов для вызовов функций и назначения переменных и т.д. Это будет ПО МЕНЬШЕ длительности времени, в течение которого вы спите, вероятно, в несколько миллисекунд больше.

Ответ 2

Это может быть неправильно, но я давно помню, что кто-то сказал мне, что время на компьютерах очень сложно измерить.

Принимая во внимание, что вызов функций sleep() и microtime() занимает какое-то время, он всегда будет отсутствовать. Есть накладные расходы при выполнении чего-либо, что не будет частью процесса синхронизации.