gnash-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-dev] Some profile numbers with potlatch/earlier GC


From: strk
Subject: [Gnash-dev] Some profile numbers with potlatch/earlier GC
Date: Tue, 22 Dec 2009 00:23:42 +0100

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! 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]