2010-04-09 16 views
40

z bardzo prostego profilowania używam microtime() tak:Profilowanie PHP za pomocą mikrotime(): Negatywny czas?

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

Teraz wyjście linii echo wydaje się całkowicie losowo, to znaczy, spodziewałem wahania, ale nie oczekiwać liczb ujemnych pojawia się.

Jednak typowy wynik zawiera ~ 1/3 liczb ujemnych. Potwierdziłem to na Solaris (PHP 5.0.x) i WinVista (PHP 5.2.3).

Co do cholery się tutaj dzieje? Czy wymyśliłem przypadkowo maszynę czasu?

+4

Tak U mieć !!!!! :) Daj mi znać, aby kontrolować to ... –

+1

to jest coś, co zauważyłem też, ale nigdy nie zawracałem sobie głowy badaniem, jestem ciekawy dla anwsera :) – ChrisR

Odpowiedz

60

Jeśli chcesz wykonywać operacje na tym, co jest zwracane przez mikrotime, musisz ustawić parametr "get as float" na wartość true (domyślnie jest to wartość false).

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

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

Klucz do sterowania czasem Maszyna !!!! –

+2

Tak, tak. Czytanie dokumentacji czasami pomaga. Dziękuję za odpowiedź! – Boldewyn

+14

Aby ukończyć odpowiedź Arkha: Odpowiedź 'microtime()' bez 'get_as_float' jest łańcuchem znaków * sprintf ('% f% d', $ mikrosekund, time())'. W jakich okolicznościach ktoś będzie potrzebował tej reprezentacji? – Boldewyn