【问题标题】:In Swift, how efficient is it to append an array?在 Swift 中,追加数组的效率如何?
【发布时间】:2014-12-30 21:18:06
【问题描述】:

如果您有一个在整个程序过程中可以非常大的数组,那么将数组声明为它将达到的最大大小然后控制您的程序可以访问多少数组会更有效吗?还是在整个程序过程中频繁更改数组的大小?

【问题讨论】:

    标签: arrays swift append


    【解决方案1】:

    来自Swift headers,这是关于阵列增长和容量的:

    当数组的连续存储空间被填满时,必须分配新的存储空间,并且必须将元素移动到新的存储空间。 Array、ContiguousArray 和 Slice 共享一个指数增长策略,这使得 append 成为一个常数时间操作在分摊到许多调用时。除了 count 属性之外,这些数组类型还有一个 capacity 反映它们在不重新分配的情况下存储元素的潜力,当您知道要存储多少元素时,您可以调用reserveCapacity 抢先重新分配并防止中间重新分配。

    阅读后,我想说最好保留所需的容量,只有在发现确实存在问题时才回来优化。如果你一直在假装长度,你会为自己做更多的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-16
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多