Pomiar czasu wykonania się algorytmu

0

Witam,
używam następującego kodu do pomiaru czasu wykonania się algorytmu.

<?
$start = microtime();
// dalszy kod
$stop = microtime();
echo "<span id=\"a2\">" . "Czas wyszukiwania: " . 1e+3*($stop-$start) . "[ms]" . "</span>";

i często się zdarza, że podaje mi czas ujemny, np. -350 ms [???]
Co robię źle ?

Pozdrawiam

0

$start i $stop ciągi znaków, najpierw są milisekundy, potem czas epoch. Jak odejmiesz same milisekundy, to dostaniesz ujemny wynik (różnica w czasie epoch po spacji)

Wynik print_r(microtime());
string '0.16939400 1204882992' (length=21)
0

Dzięki za poprawkę :-) Zrobiłem to tak:

$start = microtime();
$stop = microtime();
$czas1 = explode(" ", $start);
//echo $czas1[1];
$czas2 = explode(" ", $stop);
//echo $czas2[1];
echo "<span id=\"a2\">" . "Czas wyszukiwania: " . (trim($czas2[1])-trim($czas1[1])) . "[ms]" . "</span>";

Wyświetla mi w skrypcie czasami 0 czasami 1 ms.Czy jest to dobrze?

0

Nie, bo teraz liczysz w sekundach tylko. Musisz dodać $czas1[1] do $czas1[0] i otrzymasz czas z milisekundami, potem odejmować.

0

Sorry, ale nie rozumiem. :-)
Jak dodam $czas1[1] do $czas2[1] to otrzymam sumę.
Od tej sumy mam co odjąć ?

Pozdrawiam

0

od sumy sekund i milisekund czasu końcowego odjąć sumę sekund i milisekund czasu początkowego, chyba logiczne :|

ale wystarczy że ustawisz parametr pierwszy w microtime na true i będziesz mieć to samo:

$start = microtime(true);
$stop = microtime(true);
$czas = $stop - $start;

uwaga, działa dopiero od php 5, dla wcześniejszych wersji powyższa wskazówka (ale czy istnieje jeszcze hosting bez php 5 ...)

// oo, nawet już to jest opisane w dokumentacji php, do nie dawna to było undergroundowe rozwiązanie :P
// w php 6 defaultowo będzie zwracać liczbę rzeczywistą ;-) - n

1 użytkowników online, w tym zalogowanych: 0, gości: 1