PHP профилирование с помощью microtime (): отрицательное время? - PullRequest
41 голосов
/ 09 апреля 2010

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

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

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

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

Какого черта здесь происходит? Я случайно изобрел машину времени?

1 Ответ

67 голосов
/ 09 апреля 2010

Если вы хотите выполнить операции с тем, что возвращает microtime, вы должны установить для параметра «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);
}
...