From:             [EMAIL PROTECTED]
Operating system: all
PHP version:      4.0.6
PHP Bug Type:     Performance problem
Bug description:  Don't free each allocation in cgimode

If compiled in standalone cgi mode, when the script exits, php only needs
to free resources, not other arrays or strings or items (unless we ever
support object destructors).

It can take a LONG time to free a hundred thousand or so elements in nested
arrays, 4 or 5 times longer than it takes to create then.

See these threads in phpdev mailing list:
Re: [PHP-DEV] maybe serious error in RC3 memory manager
RE: [PHP-DEV] CGI quick cleanup

Sample code:
Note how long it takes to exit after finishing.

#! /usr/bin/php -q
<?php

ini_Set("max_execution_time","0");
ini_Set("memory_limit","500M");

class thingy {
   function thingy($c) {
     if ($c>0) $this->ref=&new thingy($c-1);
   }
}

$stash=array();
$max=500000;

$start=time();

for($i=0;$i<$max;$i++) {
   $r=rand(0,300);
   $stash[$r][]=&new thingy(rand(0,10));
   echo "\rUse: ".floor($i/$max*100)."% ";
}
echo "\n";

$mid=time();

$max=count($stash);
$c=0;
foreach(array_keys($stash) as $key) {
   unset($stash[$key]);
   $c++;
   echo "\rFree: ".floor($c/$max*100)."% ";
}
unset($stash);
echo "\n";

$done=time();

print "Use: ".($mid-$start)."\n";
print "Free: ".($done-$mid)."\n";


?>
-- 
Edit bug report at: http://bugs.php.net/?id=14263&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to