rfm@gnu.org)Date: Generated at 2024-10-24 23:26:00 -0600
Copyright: (C) 2014 Free Software Foundation, Inc.
- Declared in:
- GSUniqued.h
            The point of this class is to lower the memory
            footprint and speed up comparisons (pointer
            equality) in cases where an application stores
            multiple copies of the same object in various
            maps. 
 Since uniquing is performed by storing
            an immutable copy of the original object in a map until
            there are no further references to that object, it's
            pointless to use this uniquing unless the
            application would be storing at least two
            copies of the object. 
 Also, since this is
            thread-safe there is a lock management overhead
            wherever a uniqued object is released, so
            performance gains are to be expected only if
            the uniqued object has a relatively
            long lifetime and is tested for
            equality with other instances frequently. 
            In short, use with care; while uniquing
            can have a big performance advantage for some programs,
            this is actually quite rare.
              
            The internal implementation of the uniquing works by
            taking immutable copies of the objects to be
            uniqued, storing those copies in a hash table, and
            swizzling their class pointers to a sub-class
            which will automatically remove the instance from the
            hash table before it is deallocated. 
 Access to
            the hash table is protected by locks so that uniqued
            objects may be used freely in multiple threads.
            
 The name of the subclass used is the name of
            the original class with 'GSUniqued' added as a prefix.
              
- Declared in:
- GSUniqued.h