php microtime объяснение

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

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

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

2 ответа

Решение

Это по-прежнему требует дополнительных затрат на вызовы функций и присвоение переменных и т. Д. Это будет, по крайней мере, наименьшее количество времени, в течение которого вы спите, вероятно, еще несколько миллисекунд.

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

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

Другие вопросы по тегам