gpt4 book ai didi

rust - 我是否必须担心 `Rc` 的开销?

转载 作者:行者123 更新时间:2023-11-29 07:44:06 27 4
gpt4 key购买 nike

我是否正确地假设唯一“减慢”Rcs 的事情是它检查是否在对象下降时释放对象?除此之外,取消引用 Rc 的开销是“多少”,即我应该关心它吗?
这两个功能几乎同样快吗?还是速度有显着差异?

fn test_with_box() {
let b = Box::new(1.0);
let x = b * 2;
}

fn test_with_rc() {
let rc = Rc::new(1.0);
let x = rc * 2;
}

由于 test_with_rc() 中的引用对象始终只有一个引用,并且在该函数中表现得像 Box(当然是从外部而非内部查看)。

我怀疑 Rc 实际上比我想象的要快。

PS:当谈到“快速”时,我指的是取消引用和分配/取消分配。

最佳答案

Rc<T>非常非常便宜。它不像T那么便宜相当多(装箱值在微优化方面相对昂贵),但效率几乎不低于 Box<T> .

就像Box ,但是对于强引用计数和弱引用计数还有几个词,唯一需要触及的是创建一个 Rc。 (初始化值),克隆 Rc (增加引用计数),删除 Rc (减少引用计数并在适当的情况下运行析构函数),以及从 Weak 降级/升级(增加一个并减少两个引用计数中的另一个)。

取消引用是一个简单的内存操作,就像 Box 一样。 .

关于rust - 我是否必须担心 `Rc` 的开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31264670/

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