.Net数组元素存储在顺序存储单元中。即使所谓的“动态”List<T>
在幕后使用一个数组 - 每次添加元素 - make sure that an appropriate array is created。 (除非以预先确定的容量加以证实)
问题
为什么是这样写的?
每次寻找(当尺寸超过时) - 一个新的连续区域 - 可能是一个很大的性能损失。
他们还可以使用另一种方法,即连续细胞的n % m
区域。 - 所以我们受益两者寻求性能而不需要搜索100%顺序的免费单元格。“
(设计人员是否依赖GC将压缩/碎片整理内存这一事实,因此他们总是很容易找到连续的空闲单元?)
答案 0 :(得分:2)
他们还可以使用另一种方法,即连续细胞的n%m区域。 - 因此,我们既有利于寻求性能,又无需搜索100%顺序的空闲单元。“
无需“搜索100%顺序免费单元格”。 .NET中的分配速度非常快。
实际成本是将旧内容复制到新数组。你是对的,mxn结构可以减少一些成本。
但是总是需要权衡,而Add()的最坏情况会提高Insert(),Remove()和Seek()(this[int x]
)的成本会增加。