我已经读过NSMutableArray
将会有O(1)性能,而不是O(n)当元素从阵列的末端添加/删除(例如removeAtObject:0
或removeLastObject
),这使得它适合用作堆栈或队列 - 否定需要为这些容器类型创建LinkedList实现。NSMutableArray是否真的是堆栈或队列的良好后备存储?
这是真的吗?如果是这样,苹果如何设法做到这一点?如果不是,是否有任何证据表明,随着阵列中元素数量的增加,添加/删除元素在NSMutableArray
实例末端所花费的时间会增加? PS:由于NSMutableArray
基本上是CFArray
(它是“纯C”对应物)和the source code to CFArray
is open,应该有可能检查它的内部工作。
我不知道什么是精确的性能点 - 我怀疑它总是O(1),但实现是“聪明”和我怀疑它使用了一系列链接的数组来使性能相当“稳定”。 – 2013-04-27 13:24:25
链接列表具有较差的引用和分段属性的位置。如果没有它们,可以实现摊销O(1)。 – 2013-04-27 17:20:18
一些经验性的探索:http://ridiculousfish.com/blog/posts/array.html – 2013-04-27 18:23:07