From: David Abrahams (dave_at_[hidden])
Date: 2005-03-19 23:31:13
"Peter Dimov" <pdimov_at_[hidden]> writes:
>> The weak_ptr adds an extra count (1 word) but more importantly
>> requires a mutex, at least on platforms lacking more advanced
>> lock-free primitives such as InterlockedCompareExchange.
> The theoretical minimum cost of a non-intrusive pointer is:
> - per-instance pointer to the count;
> - one word for the count.
> Feature (1) above adds:
> - vtable
> - pointer
> The functor need not be present when not used, although the current code
> base does not do that. It can also be optimized out when it's an empty class
> with the help of boost::compressed_pair. Again, the current code base
> doesn't do it, but we're talking about the design-imposed overhead here.
You could also replace the vtable with a function pointer per
Boost.Function and eliminate some space overheads associated with
dynamic type info.
-- Dave Abrahams Boost Consulting www.boost-consulting.com