C 中智能指针的内存和时间开销
智能指针,如 C 11 中的 std::shared_ptr 和 std::unique_ptr,提供自动内存管理并简化所有权语义。然而,一些开发人员可能想知道与传统指针相比,使用智能指针对性能的潜在影响。
内存开销:
std::unique_ptr 仅在以下情况下才会施加内存开销:提供了一个重要的删除器。然而,std::shared_ptr 总是需要额外的内存用于引用计数器,尽管数量相对较小。
时间开销:
std::unique_ptr 在如果需要复制提供的删除器或需要将指针初始化为 null,则需要进行构造,以及在销毁期间销毁拥有的对象。
std::shared_ptr 主要在构造期间创建引用计数器、在销毁期间经历时间开销递减引用计数器并可能破坏对象,并在赋值期间递增引用计数器。此外,这些增量/减量对于线程安全来说是原子的,进一步增加了开销。
对性能的影响:
重要的是要注意,没有一个智能指针在取消引用期间有时间开销,这通常是指针最频繁的操作。
一般来说,与智能指针相关的开销很小,不会显着影响代码性能。然而,不断创建和销毁智能指针会引入性能瓶颈。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3