web-dev-qa-db-ja.com

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)でこれを確認しました。

ここで一体何が起こっているのですか?誤ってタイムマシンを発明したことがありますか?

42
Boldewyn

Microtimeによって返されるものに対して操作を実行する場合は、「get asfloat」パラメーターをtrueに設定する必要があります(デフォルトはfalse)。

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

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