Top profile when running potlatch (photo) with GC runs
on ActionExec cleanup (end of function calls):

  %   cumulative   self              self     total
 time   seconds   seconds    calls   s/call   s/call  name
 20.97      9.76     9.76 11557741     0.00     0.00  
gnash::XMLNode_as::setReachable()
 12.78     15.71     5.95 37786384     0.00     0.00  
gnash::PropertyList::setReachable() const

Graph starting at GC::runCycle:

[10]    52.3    0.00   24.35     296         gnash::GC::runCycle() [10]
                0.00   20.50     296/296         
gnash::VM::markReachableResources() const [11]
                3.40    0.45     296/296         gnash::GC::cleanUnreachable() 
[29]

As you can see the most expensive GC phase is the marking one,
and that's due to marking of XML nodes.

The whole XML object is a local variable, so all that marking time
is just NOT spent if we collect at action execution end...

Potlatch code:

 function loadPhotos() {
  var kmldoc=new XML();
  kmldoc.load(...);
  kmldoc.onLoad=function() {
    ...that horrible loop here, including function calls...
  };
 };

So, to recap, aggressive GC is just too expensive as there are too
many additional things reachable during action execution.

This is unless we're doing something stupid (duplicating marks)
while marking Relay objects, which I can't tell out of the box....

--strk; 

 Free GIS & Flash consultant/developer      ()  ASCII Ribbon Campaign
 http://foo.keybit.net/~strk/services.html  /\  Keep it simple! 


_______________________________________________
Gnash-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnash-dev

Reply via email to