【发布时间】:2014-12-30 21:18:06
【问题描述】:
如果您有一个在整个程序过程中可以非常大的数组,那么将数组声明为它将达到的最大大小然后控制您的程序可以访问多少数组会更有效吗?还是在整个程序过程中频繁更改数组的大小?
【问题讨论】:
如果您有一个在整个程序过程中可以非常大的数组,那么将数组声明为它将达到的最大大小然后控制您的程序可以访问多少数组会更有效吗?还是在整个程序过程中频繁更改数组的大小?
【问题讨论】:
来自Swift headers,这是关于阵列增长和容量的:
当数组的连续存储空间被填满时,必须分配新的存储空间,并且必须将元素移动到新的存储空间。 Array、ContiguousArray 和 Slice 共享一个指数增长策略,这使得 append 成为一个常数时间操作在分摊到许多调用时。除了
count属性之外,这些数组类型还有一个capacity反映它们在不重新分配的情况下存储元素的潜力,当您知道要存储多少元素时,您可以调用reserveCapacity抢先重新分配并防止中间重新分配。
阅读后,我想说最好保留所需的容量,只有在发现确实存在问题时才回来优化。如果你一直在假装长度,你会为自己做更多的工作。
【讨论】: