"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
