Han*_*ans 6 c# arrays performance list
根据Microsoft 文档,在List上调用Clear()是O(n)操作.我猜这是因为如果列表要保存引用,则需要将它们置空.我想知道如果列表具有值类型,Clear()是否仍然是O(n)操作,因为容量没有改变.重置索引指针和计数不应该足够吗?
我问这个是因为在当前的应用程序中,我们使用的列表在很短的时间内就被清除了数十万次,并想知道是否有不同的实现可以使它更快.
检查List.Clear方法源代码:
Array.Clear(_items, 0, _size);
_size = 0;
Run Code Online (Sandbox Code Playgroud)
Array.Clear 是一个 extern 方法,MSDN 关于Array.Clear 的声明是:
将数组中的元素范围设置为每种元素类型的默认值。
因此即使 T 是值类型,它仍然是一个 O(n) 操作。
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |