【问题标题】:smaller runtime data structures and faster code for unique _ptr compared to shared_ptr与 shared_ptr 相比,唯一 _ptr 的运行时数据结构更小,代码更快
【发布时间】:2018-01-24 01:07:48
【问题描述】:

对于 unique_ptr 而言,删除器的类型是智能指针的一部分,但与 shared_ptr 相比,这如何帮助编译器生成更小的运行时数据结构和更快的 unique_ptr 代码?

【问题讨论】:

  • 可能是因为 shared_ptr 的开销与删除器无关,更多是因为线程安全引用计数?

标签: c++ c++11 c++14 shared-ptr unique-ptr


【解决方案1】:

删除器不是这里提到的。

shared_ptr<> 需要为每个分配的对象分配(除其他外)两个额外的数字(强引用计数和弱引用计数)。

如果使用std::make_shared(),它们将与对象本身一起存储,否则,需要为它单独分配。

此外,请记住,unique_ptr<> 可以利用空类优化来消除无状态删除器的任何开销。

gcc,至少,似乎是这样做的(至少在std::default_delete 中): https://godbolt.org/g/nbENL7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2019-01-31
    • 2012-03-21
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多