我想了解一下使用Arc和克隆Arc之间的利弊。
与
除了衡量和比较性能结果外,我不认为两者中的任何一个在性能上会差很多,我想了解什么是锈人心目中的 "普遍更好 "或 "更习惯"。
如果我的理解没错的话。
与
在这种情况下("Something "的创建成本很低),用Arc包装与直接克隆它有什么好处吗?这两个选项中的任何一个是可取的吗?
在这种情况下("Something "的创建成本很低),用Arc包装和仅仅克隆它有什么好处吗?
如果你真的只是有一个 Arc<Something>
而你又要克隆它,那么可能不会。如果你想在线程之间共享某些东西,而且所有权不明确,那么弧线是必要的,通常你会希望在 refcount 里面有某种锁来允许修改共享项目。
虽然在某些情况下,没有锁也可以很有用,比如内部对象不能(因为它是唯一的)或者不应该(因为它很贵)被复制,并且需要(不可改变的)被多个线程使用(所以你使用Arc作为共享单个实例的一种方式),或者它有时被复制(而且很贵),但一般不会被复制,在这种情况下,与其创建急切的副本,你可以 make_mut
当需要 "拆分 "Arc,但将额外的分配推迟到那个时候。