泛型列表中的list.RemoveAt(0)有多贵?
泛型列表中的list.RemoveAt(0)有多贵?
C#,.NET4.
我们有一些性能关键代码导致一些问题。实际上,它有点类似于修改过的队列,实际上由List支持。我想知道从索引0删除元素的成本如何。我所想到的问题是:
- 根据List的后备方式,是否在RemoveAt()后会发生任何内存分配/释放以补偿列表的新大小?例如,我知道调整数组大小可能是昂贵的(相对而言)
- 我总是想象Lists表现得像链表,因此从零位置删除元素将意味着仅将起始列表引用从先前的零元素调整为从前1个元素(但现在是第一个元素)。但是,我的“想象”和现实并不总是一致的。
我一直认为RemovedAt对于Lists来说是O(1)。是这种情况吗?
admin 更改状态以发布 2023年5月25日