
On Tue, May 24, 2011 at 4:52 PM, Phil Bouchard <philippe@fornux.com> wrote:
On 5/24/2011 4:07 PM, Nevin Liber wrote:
Your claim is " It is a fast as the popular smart pointer * boost::shared_ptr<T>*". Yet, in single-threaded code and shared_ptr using new instead of make_shared, block_ptr still takes 3.3x as long as shared_ptr.
That is *a lot* of overhead...
I just tested it using make_shared & make_block and I get: make: auto_ptr: 11109841 ns shared_ptr: 21215277 ns block_ptr: 143637475 ns
new: auto_ptr 4583447 ns shared_ptr: 10675000 ns block_ptr: 67152785 ns
FYI make_shared is slower than new because of the temporary it creates. If people what speed they should stick to operator new in all cases.
In my experience any assumptions about speed do more harm than good. It's probably best to pick the semantics you want (do you want the control block allocated with the object or not), and only worry about speed when it is known to be a problem. Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode