我已經讀過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