
On 24 May 2011 18:52, 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.
Heck, even auto_ptr is significantly faster using new instead of make_shared and make_block. Simply amazing! Wait, ... how exactly did you use make_shared and make_block in the auto_ptr case? And that isn't nearly as amazing as your assertion that an increment and decrement of a reference count (which is all that a shared_ptr "temporary" translates into) is not only slower, but *significantly* slower than a heap allocation/deallocation in the standard heap. -- Nevin ":-)" Liber <mailto:nevin@eviloverlord.com> (847) 691-1404