"foreach ($arr as $k => $v)" is 2 times as faster as "foreach ($arr as $v)" in php4.3.x
both test under lastest cvs. 4.3.12-dev testing with array[] = string $v: 2.5590002536774 $k=>$v: 0.7020001411438 $v each(): 1.025000333786 $k $v each(): 1.1790001392365 testing with array[] = array(string) $v: 0.50299978256226 $k=>$v: 0.70599985122681 $v each(): 0.9909999370575 $k $v each(): 1.172000169754 5.1.0-dev testing with array[] = string $v: 0.15599966049194 $k=>$v: 0.19999980926514 $v each(): 0.78099966049194 $k $v each(): 0.77299976348877 testing with array[] = array(string) $v: 0.16900014877319 $k=>$v: 0.19900012016296 $v each(): 0.71399998664856 $k $v each(): 0.77100014686584 <?php function mtime() { list($s, $ms) = explode(' ', microtime()); return $s + $ms; } function stopwatch() { static $now; $old = $now; $now = mtime(); return $now - $old; } function runtest($arr) { $count = 1000; stopwatch(); for ($i = 0; $i < $count; $i ++); $extra = stopwatch(); stopwatch(); for ($i = 0; $i < $count; $i ++) { $r = $arr; foreach ($r as $v) $dummy = $v; } echo '$v:', "\t", stopwatch() - $extra, "\n"; stopwatch(); for ($i = 0; $i < $count; $i ++) { $r = $arr; foreach ($r as $key => $v) $dummy = $v; } echo '$k=>$v:', "\t", stopwatch() - $extra, "\n"; stopwatch(); for ($i = 0; $i < $count; $i ++) { $r = $arr; reset($r); while (list(, $v) = each($r)) $dummy = $v; } echo '$v each():', "\t", stopwatch() - $extra, "\n"; stopwatch(); for ($i = 0; $i < $count; $i ++) { $r = $arr; reset($r); while (list($k, $v) = each($r)) $dummy = $v; } echo '$k $v each():', "\t", stopwatch() - $extra, "\n"; } echo PHP_VERSION, "\n"; echo "testing with array[] = string\n"; $arr = array(); for ($i = 0; $i < 100; $i ++) { $arr[] = str_repeat('-', 10240); } runtest($arr); echo "testing with array[] = array(string)\n"; $arr = array(); for ($i = 0; $i < 100; $i ++) { $arr[] = array(str_repeat('-', 10240)); } runtest($arr); echo "testing with queryAll\n"; [quote: http://ez.no/community/blog/foreach_performance_improvement_backport] This patch improves performance with foreach() where the key of the array element is not interesting (for example foreach($array as $value); ). [/quote] -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php