首页 > 解决方案 > Swift:数组的初始容量、ReserveCapacity() 和避免重新分配

问题描述

假设我有这个:

var collection: Array<String> = []

Swift 分配后的初始容量是多少?collection我有兴趣防止重新分配(这很昂贵)。我了解 Swift 自动重新分配容量的几何增长策略,因为我需要 Array 中的更多插槽。我也理解连续调用reserveCapacity()而不是允许正常的几何增长的陷阱。

但是,如果初始容量是2或其他一些较低的数字,并且我知道我将要添加 10 个项目collection,那么从性能的角度来看,我是否会更好地服务于:

var collection: Array<String> = []
collection.reserveCapacity(10)

为了避免在我将项目附加到数组时重新分配48和项目?16

注意:在您告诉我不要担心它之前,因为性能差异非常小,这是一个人为的案例。实际上,我有数千个对象将具有一个collection属性,每个collection对象将包含大约 5-10 个项目,这些项目将逐步添加,并且在创建 Array 时不知道。可能涉及成千上万的重新分配。

标签: arraysswiftperformancememoryrealloc

解决方案


推荐阅读