Swift5 写入时复制 copy-on-write

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift5 写入时复制 copy-on-write相关的知识,希望对你有一定的参考价值。

参考技术A

swift 的数组是值类型,值类型的一个特点是在传递和赋值时进行复制。 swift 使用了 copy-on-write 来避免频繁复制带来的额外开销。只有当多个对象指向相同的资源,其中一个对象尝试修改资源内容时, copy 才会触发。

维基百科描述很清晰

苹果关于数组使用copy-on-write的文档

简单概述和演示:

可以看到,原本 numberArray1 和 numberArray2 指向同一地址,当 numberArray2 要添加 6 时,触发了 copy 操作,把源地址 0x0000600000eb5560 的内容 copy 了一份到新地址 0x00006000006b5750 ,然后在新地址上添加新元素 6 ,赋值给 numberArray2 。
最终 numberArray1 指向的地址没有改变, numberArray2 指向新的地址

虽然数组是值类型,但我们的赋值操作不会产生性能耗损,因为复制发生在有条件的内容改变时,而不是赋值的时候

以上是关于Swift5 写入时复制 copy-on-write的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中写时复制(Copy-On-Write)Map实现

Linux写时拷贝技术(copy-on-write)

Linux写时拷贝技术(copy-on-write)

死磕 Java 基础 — 谈谈那个写时拷贝技术(copy-on-write)

死磕 Java 基础 — 谈谈那个写时拷贝技术(copy-on-write)

死磕 Java Core — 谈谈那个写时拷贝技术(copy-on-write)