gpt4 book ai didi

iphone - 如果我创建一个容量 = 3 而不是容量 = 50 的 NSMutableArray 有多大影响?

转载 作者:行者123 更新时间:2023-12-03 18:30:21 25 4
gpt4 key购买 nike

我想知道这是否会严重影响性能或内存消耗。我需要一个 NSMutableArray,一开始我只能猜测会添加多少个对象。大概有3到5个吧。所以我这样创建它:

NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:3];

例如,当使用 3 而不是 50 的容量创建它时,到底会发生什么?当知道至少有 20 个元素时,创建容量为 1 的它是不是一个坏主意?或者这还不够重要,值得让人头疼吗?我的应用程序中有大约 10 个这样的数组,它们都必须在启动时加载。

最佳答案

initWithCapacity 将导致 NSMutableArray 为该数量的元素预分配空间。

将更多数据放入 NSMutableArray 中超出该容量将导致 NSMutableArray 重新分配其底层内存。这种重新分配还需要将整个数组从旧的(较小的)分配复制到新的(较大的)分配。因此,如果这个数字太小,就会造成性能损失,但不会太大。

指定大于实际使用容量的容量会浪费内存,因为将为永远不会使用的项目分配内存。

我的建议是,如果您知道数组的大小通常不会超过 N 个项目,请调用 initWithCapacity:N。偶尔大于 N 的 NSMutableArray 的性能损失是可以接受的,并且您不必为那些不超过该限制的数组付出代价。

关于iphone - 如果我创建一个容量 = 3 而不是容量 = 50 的 NSMutableArray 有多大影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1308849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com