ByREV php Classes Timer – Determine execution time in PHP
Measuring PHP execution time with ByREV PHP Classes Timer.
class ByRevTimer { public function StartTimer() { $GLOBALS['_byrev_timer_'][] = microtime(); return count( $GLOBALS['_byrev_timer_'] ) - 1; } function ReadTimer($id,$restart=true) { if (isset($GLOBALS['_byrev_timer_'][$id])) { $mtime = microtime(); $end_time = explode(" ",$mtime); $end_time = $end_time[1] + $end_time[0]; $start_time = explode(" ",$GLOBALS['_byrev_timer_'][$id]); $start_time = $start_time[1] + $start_time[0]; $totaltime = $end_time - $start_time; if ($restart) { $GLOBALS['_byrev_timer_'][$id] = microtime(); } return $totaltime; } else { return -1; } } function DestroyTimer($id) { if (isset($GLOBALS['_byrev_timer_'][$id])) { unset ( $GLOBALS['_byrev_timer_'][$id] ); return true; } else { return false; } } function RestartTimer($id) { if (isset($GLOBALS['_byrev_timer_'][$id])) { $GLOBALS['_byrev_timer_'][$id] = microtime(); return true; } else { return false; } } }
Example Here (How To):
$timer = new ByRevTimer();$t1 = $timer->StartTimer();
$t2 = $timer->StartTimer();
$t3 = $timer->StartTimer();
$max = 100000;
echo ‘<pre>’;
for ($i=0; $i<$max; $i++) { $current_directory = getcwd(); }
echo ‘Timer(’.$t3.’) – ‘.$timer->ReadTimer($t3).” sec\n”;for ($i=0; $i<$max; $i++) { $current_directory = dirname(__FILE__); }
echo ‘Timer(’.$t3.’) – ‘.$timer->ReadTimer($t3).” sec\n”;for ($i=0; $i<$max; $i++) { $current_directory = dirname($_SERVER["SCRIPT_FILENAME"]); }
echo ‘Timer(’.$t3.’) – ‘.$timer->ReadTimer($t3).” sec\n”;
echo ‘Total Execution Test 1: Timer(’.$t2.’) – ‘.$timer->ReadTimer($t2).” sec\n\n”;$timer->StartTimer();
for ($i=0; $i<$max; $i++) { $current_directory = dirname($_SERVER["DOCUMENT_ROOT"].$_SERVER["PHP_SELF"]); }
echo ‘Timer(’.$t3.’) – ‘.$timer->ReadTimer($t3).” sec\n”;for ($i=0; $i<$max; $i++) { $current_directory = substr( $_SERVER["SCRIPT_FILENAME"], 0, strrpos( $_SERVER["SCRIPT_FILENAME"], “/”)); }
echo ‘Timer(’.$t3.’) – ‘.$timer->ReadTimer($t3).” sec\n”;for ($i=0; $i<$max; $i++) { $current_directory = substr(__FILE__, 0, strrpos(__FILE__, “\\”)); }
echo ‘Timer(’.$t3.’) – ‘.$timer->ReadTimer($t3).” sec\n”;
echo ‘Total Execution Test 2: Timer(’.$t2.’) – ‘.$timer->ReadTimer($t2).” sec\n\n”;echo ‘Total Execution All Test: Timer(’.$t1.’) – ‘.$timer->ReadTimer($t1).” sec\n”;
echo ‘</pre>’;
Example Result:
Timer(2) - 0.0892598628998 sec Timer(2) - 0.079479932785 sec Timer(2) - 0.087700843811 sec Total Execution Test 1: Timer(1) - 0.256597995758 sec Timer(2) - 0.129435062408 sec Timer(2) - 0.197462081909 sec Timer(2) - 0.173103094101 sec Total Execution Test 2: Timer(1) - 0.5001039505 sec Total Execution All Test: Timer(0) - 0.756779909134 sec
Source Classes (Timer) + Example: HERE
Only php source Classes Timer: HERE









pls datimi si mie o invitatie
masoara timpul de executie al unei secvente de cod, al incarcarii pagini, etc … Smecheria e ca asta e facut in asa natura incat este usor de folosit si se pot masura mai multe subsecvente de cod, cu un minim de efort cerebral
Nu este obligatoriu folosirea ca si clasa, se poate exclude codul din class si se apeleaza ca o functie normala fara a mai crea obiectul de genul $timer = new ByRevTimer();
adica codul:
$t1 = $timer->StartTimer();
devine
$t1 = StartTimer();
cand citesti timpul scurs dupa executia StartTimer folosesti valoarea salvata in $t1
ReadTimer($t1)
rezultatul este in secunde. rezolutia este f mare, de genul: 0.0000000001 sec
ce face asta?