Подтвердить что ты не робот

Профилирование PHP с помощью microtime(): Отрицательное время?

Для очень простого профилирования я использую microtime() следующим образом:

$now = microtime();
for (...) {
    // do something
    echo microtime() - $now;
    $now = microtime();
}

Теперь вывод строки echo кажется полностью случайным, то есть ожидаемыми колебаниями, но я не ожидал появления отрицательных чисел.

Однако типичный результат содержит ~ 1/3 отрицательных чисел. Я подтвердил это на Solaris (PHP 5.0.x) и WinVista (PHP 5.2.3).

Что, черт возьми, происходит здесь? Я случайно придумал машину времени?

4b9b3361

Ответ 1

Если вы хотите выполнять операции над тем, что возвращается микрочешью, вам необходимо установить для параметра "get as float" значение true (по умолчанию оно равно false).

http://www.php.net/manual/en/function.microtime.php

$now = microtime(true);
for (...) {
    // do something
    echo microtime(true) - $now;
    $now = microtime(true);
}