42 votes

Profilage de PHP avec microtime() : Temps négatif ?

Pour un profilage très simple, j'utilise microtime() comme ça :

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

Maintenant, la sortie de la echo semble complètement aléatoire, c'est-à-dire que je m'attendais à des fluctuations, mais je n'a pas s'attendre à les nombres négatifs se montrer.

Cependant, un résultat typique contient ~ 1/3 de nombres négatifs. J'ai confirmé cela sur Solaris (PHP 5.0.x) et WinVista (PHP 5.2.3).

Que diable se passe-t-il ici ? Ai-je inventé par hasard une machine à remonter le temps ?

69voto

Arkh Points 5804

Si vous souhaitez effectuer des opérations sur ce qui est renvoyé par microtime, vous devez définir le paramètre "get as float" sur true (false par défaut).

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X