"Marcin 'Qrczak' Kowalczyk" <[EMAIL PROTECTED]> wrote:
> 
> Brian Quinlan <[EMAIL PROTECTED]> writes:
> 
> >> Reference counting is inefficient, doesn't by itself handle cycles,
> >> and is impractical to combine with threads which run in parallel. The
> >> general consensus of modern language implementations is that a tracing
> >> GC is the future.
> >
> > How is reference counting inefficient?
> 
> It involves operations every time an object is merely passed around,
> as references to the object are created or destroyed.

Redefine the INC/DECREF macros to assign something like 2**30 as the
reference count in INCREF, and make DECREF do nothing.  A write of a
constant should be measurably faster than an increment.  Run some
relatively small test program (be concerned about memory!), and compare
the results to see if there is a substantial difference in performance.

> It doesn't move objects in memory, and thus free memory is fragmented.
> Memory allocation can't just chop from from a single area of free memory.
> It can't allocate several objects with the cost of one allocation either.

It can certainly allocate several objects with the cost of one
allocation, but it can't *deallocate* those objects individually.  See
the various freelists for examples where this is used successfully in
Python now.

 - Josiah

_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to