gpt4 book ai didi

C++ 智能指针性能

转载 作者:IT老高 更新时间:2023-10-28 22:00:22 25 4
gpt4 key购买 nike

与裸指针相比,使用智能指针,尤其是 boost::shared_ptr 在时间和内存方面的成本更高吗?对游戏/嵌入式系统的性能密集型部分使用裸指针是否更好?您会建议对性能密集型组件使用裸指针还是智能指针?

最佳答案

取消引用智能指针通常是微不足道的,当然对于 Release模式的 boost 。所有 boost 检查都在编译时进行。 (智能指针理论上可以跨线程执行智能操作)。这仍然留下了许多其他操作。 Nicola 提到了 build 、复制和破坏。不过,这不是完整的集合。其他重要的操作是交换、赋值和重置为 NULL。基本上,任何需要智能的操作。

请注意,其中一些操作被一些智能指针排除在外。例如。 boost::scoped_ptr 甚至不能被复制,更不用说被赋值了。由于这留下了更少的操作,因此可以针对这些更少的方法优化实现。

事实上,随着 TR1 的出现,编译器很可能使用智能指针比原始指针做得更好。例如。编译器可能会证明智能不可复制指针在某些情况下没有别名,仅仅是因为它是不可复制的。想一想:当创建两个指向同一个对象的指针时,就会发生别名。如果第一个指针不能被复制,第二个指针怎么会指向同一个对象呢? (也有一些方法可以解决这个问题 - operator* 必须返回一个左值)

关于C++ 智能指针性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/308477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com