note 95126 deleted from language.variables.scope by danbrown

From: Date: Mon, 14 Dec 2009 23:04:22 +0000
Subject: note 95126 deleted from language.variables.scope by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-163964@lists.php.net to get a copy of this message
Note Submitter: merlinyoda at dotproject dot net ---- In response to moraesdno at gmail dot com It would seem offhand that using the $GLOBALS array is *slightly* faster but, unless you're calling that function millions of times, you're probably not going to see any noticeable benefit in using one over the other ... especially when weighed against other concerns such as code maintainability. Here's the code I used for testing (based off code test in previous post): <?php define ('NUM_RUNS', 1); define ('NUM_CALLS', 1000); //Using the keyword global function sum1() { global $a, $b; $a += $b; } //Using the superglobal array function sum2() { $GLOBALS['a'] += $GLOBALS['b']; } $func_array = array(0 => 'sum2', 1 => 'sum1'); $time_sum = array(); for ($k = 0; $k < NUM_RUNS; $k++){ for ($j = 0; $j < count($func_array) ; $j++) { $a = 1; $b = 2; $t = microtime(true); for($i=0; $i<NUM_CALLS; $i++) { $func_array[$j](); } $total_time = microtime(true) - $t; $time_sum[$j] += $total_time; // echo $func_array[$j] . '() : '. $total_time . ' -- a = ' . $a . "\n"; } } echo ' NUM_CALLS = ' . NUM_CALLS . "\n"; echo ' NUM_RUNS = ' . NUM_RUNS . "\n"; for ($j = 0; $j < count($func_array) ; $j++) { echo $func_array[$j] . '() total = ' . $time_sum[$j]; echo ' average = ' . ($time_sum[$j] / NUM_RUNS) . "\n"; } ?> and the following are the results after several runs changing both the order the functions were called in (as it seemed to make a difference) and as well as the number of calls. ./global-test.php NUM_CALLS = 1000 NUM_RUNS = 1 sum1() total = 0.00862908363342 average = 0.00862908363342 sum2() total = 0.00778603553772 average = 0.00778603553772 ./global-test.php NUM_CALLS = 1000 NUM_RUNS = 1 sum2() total = 0.00794410705566 average = 0.00794410705566 sum1() total = 0.00887393951416 average = 0.00887393951416 ./global-test.php NUM_CALLS = 1000 NUM_RUNS = 50 sum1() total = 0.413125038147 average = 0.00826250076294 sum2() total = 0.379062414169 average = 0.00758124828339 ./global-test.php NUM_CALLS = 1000 NUM_RUNS = 50 sum2() total = 0.385180234909 average = 0.00770360469818 sum1() total = 0.415044784546 average = 0.00830089569092 ./global-test.php NUM_CALLS = 10000 NUM_RUNS = 100 sum1() total = 8.20324921608 average = 0.0820324921608 sum2() total = 7.44592571259 average = 0.0744592571259 ./global-test.php NUM_CALLS = 10000 NUM_RUNS = 100 sum2() total = 7.57914853096 average = 0.0757914853096 sum1() total = 8.00758075714 average = 0.0800758075714

« previous php.notes (#163964) next »