Bil*_*eal 18 c++ performance shared-ptr c++11
make_shared
比单独主叫更好的性能new
和创建shared_ptr
因为make_shared
分配用于在相同的存储块作为客户端对象实例(有效地赋予的引用计数和弱计数空间shared_ptr
的大部分的性能优势intrusive_ptr
).
enable_shared_from_this
给出一个共享指针,而不引用任何共享指针.因此,必须以某种方式从客户端对象内部访问诸如引用和弱计数之类的内容.因此,enable_shared_from_this
引起类似的侵入性计数是明智的make_shared
.
但是,我不知道这样的事情是如何实现的(我不确定即使我查看实际来源,我也会按照那里发生的事情).
那么(出于性能原因)标记我的类enable_shared_from_this
是否有意义,如果我知道它只会被用作a shared_ptr
而不是作为原始对象?
我从来没有深入研究实现的细节,但是为了shared_from_this
工作,对象必须已经由外部管理shared_ptr
,所以它在某种程度上是无关的.即第一个shared_ptr
可能已创建,make_shared
在这种情况下,计数和对象在一起(正如你所说的那样侵入指针),但不一定是这种情况.
我的第一个猜测是enable_shared_from_this
增加相当于a weak_ptr
,而不是a shared_ptr
.编辑:我刚刚验证了gcc4.6中的实现:
template <typename _Tp>
class enable_shared_from_this {
...
mutable weak_ptr<_Tp> _M_weak_this;
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1917 次 |
最近记录: |