On Wed, 5 Dec 2007, Matthias Pigulla wrote:

> > > Is it possible to always perform (unconditionally compile in) the
> > > necessary housekeeping tasks but stick with the current GC, so that
> > > cycle-detection only happens when the user calls a
> > > gc_go_find_cycles()
> > > function? Would that significantly improve the above numbers?
> > 
> > Yes, that would be possible, but it wouldn't speed anything up in case
> > you don't have any cycles.
> 
> Not sure I got you right. That is, the speed penalty comes from 
> housekeeping? Does the new GC try to find cycles automatically 
> whenever a refcount goes down to zero?

Not immediately... the algorithm should only run when either the root 
buffer is full, or the function is run manually.

> If building and maintaining data structures for the algorithm costs 
> only a little memory but speed impact is neglegible unless the 
> algorithm actually runs, then you could stick with the 
> non-cycle-detecting "legacy" GC (= speed) unless you know you have 
> cycles and/or want to trade a little processing time (a call to 
> gc_go_find_cycles()) for the memory it will/might free.

Yes, exactly. But it's just as easy to turn automatic cleaning as well - 
in that case the find cycle algorithm will kick in at some specific 
amount of "freed" vars.

regards,
Derick

-- 
Derick Rethans
http://derickrethans.nl | http://ezcomponents.org | http://xdebug.org

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to