Home > Bookmarks, PhP, Tech > ByREV php Classes Timer – Determine execution time in PHP

ByREV php Classes Timer – Determine execution time in PHP

February 21st, 2009 Leave a comment Go to comments

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

  1. February 23rd, 2009 at 12:18 | #1

    pls datimi si mie o invitatie

  2. February 23rd, 2009 at 02:38 | #2

    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 :D

    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

  3. February 21st, 2009 at 14:50 | #3

    ce face asta?

  1. No trackbacks yet.
GoCache - ByREV-Cache v1.0 - live served in : 0.151046 sec (gzip)