#51122 [Bgs]: the iteration on arrays with calling functions is very slow
ID: 51122
User updated by: y_kopel at walla dot com
Reported By: y_kopel at walla dot com
Status: Bogus
Bug Type: Arrays related
Operating System: linux
PHP Version: 5.3.1
New Comment:
so... maybe it worth to erite an optimization on it?
Previous Comments:
------------------------------------------------------------------------
[2010-02-24 06:59:31] rasmus@php.net
With gc on there are gc checks on every iteration. Just because it
doesn't use more memory doesn't mean that gc doesn't add more overhead
------------------------------------------------------------------------
[2010-02-24 06:57:03] y_kopel at walla dot com
but...
with and without gc_enable/gc_disable
it consume the same ammount of memory
but work 40 times longer with gc_enable
------------------------------------------------------------------------
[2010-02-23 13:02:23] jani@php.net
Or run the script in 32bit system (and turn of GC :).
With latest SVN checkout of PHP_5_3:
$ src/build/php_5_3/sapi/cli/php -dmemory_limit=1G t.php
1.2259361743927
$ src/build/php_5_3/sapi/cli/php -dmemory_limit=1G -dzend.enable_gc=0
t.php
0.70840787887573
And with latest SVN checkout of PHP_5_2:
$ src/build/php_5_2/sapi/cli/php -dmemory_limit=1G t.php
0.69131684303284
Not noticeable even.
------------------------------------------------------------------------
[2010-02-23 12:59:02] jani@php.net
Just turn off garbage collection if this is a problem for you.
(zend.enable_gc = off in php.ini)
------------------------------------------------------------------------
[2010-02-23 11:54:00] y_kopel at walla dot com
shorter code:
<?php
for ($i = 0 ;$i < 1000000 ; $i++){
$users[$i]['SUM'] = 2;
}
$start = microtime(true);
$sum = 0;
foreach ($users as &$u){
if ($u['SUM'] > 1){ $sum++;}
}
echo microtime(true) - $start."\n";
?>
OUTPUT
======
php 5.2.1
=========
0.328261852264
php 5.3.1
=========
42.350708961487
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/51122
--
Edit this bug report at http://bugs.php.net/?id=51122&edit=1
Thread (7 messages)