如果你的程序在整个程序过程中有一个非常大的数组,那么将数组声明为它将达到的最大大小然后控制程序可以访问的数组的数量会更高效,或者在整个程序过程中经常更改数组的大小?
答案 0 :(得分:3)
从Swift headers开始,有关阵列增长和容量的信息:
当阵列的连续存储填满时,必须分配新存储,并且必须将元素移动到新存储。 Array,ContiguousArray和Slice共享一个指数增长策略,当通过多次调用分摊时,它会附加一个恒定时间操作。除
count
属性外,这些数组类型还有{{1这反映了他们在没有重新分配的情况下存储元素的潜力,当你知道你将要存储多少元素时,你可以调用capacity
来先发制人地重新分配并防止中间重新分配。
读到这一点,我说它最好保留你需要的容量,只有当你发现它确实是一个问题时才回过头来优化它。如果你一直伪造长度,你将为自己做更多的工作。