首页 > 解决方案 > 我们是否必须为自定义类型实现写入时复制行为?

问题描述

在 Swift 中,集合是通过写时复制行为隐式实现的;但是,我们不会在自定义类型中免费获得它。

我的主要问题是:

不管如何实现,为我们的自定义类型做一个好主意吗?为什么/为什么不?

而且:

根据这个答案,即使是 Swift 标准库提供的内置类型(但不是集合)也没有实现它,这可能表明我们不必这样做。即便如此,这样做有什么好处吗?

标签: swiftcopy-on-write

解决方案


您不必这样,但如果您有资源并且需要这样做,它可能是值得的优化。问自己以下问题:

  • 我的数据类型是否经常被复制(即适用性)?
  • 在合理的时间内实施 CoW 是否足够容易(即可行性)?
  • 我的应用程序是否受益于这些优化(即投资回报)​​?

可能在大多数应用程序中没有必要,用户也不会注意到差异。在某些特定情况下,它可能适用,但很关键。记住:

过早的性能优化是万恶之源 ~ Donald Knuth


推荐阅读