将通用列表与数组进行比较

时间:2008-11-06 17:23:45

标签: .net arrays list

为什么generic.list比数组慢?

2 个答案:

答案 0 :(得分:5)

通用列表比数组略慢,但在大多数情况下你并没有注意到。大多数情况下,它与查找稍微复杂一点:据说List使用“引擎盖下”的数组,但并不能保证在数组中以相同的方式将节点保存在相邻的内存中。

然而,我在2005年看到了一些基准测试(现在找不到链接),差异是非常小。

此外,该列表与数组相比具有许多重要优势:主要是添加或删除项目很简单。当您不知道需要多少项目或者该数字会有所不同时,使用列表会容易得多。在那些情况下(老实说,大多数情况下,你可能使用数组。

答案 1 :(得分:2)

就读取性能而言,有两个因素:

  • 额外的解除引用(即List<T>将包含T[]字段,并且必须取消引用它)
  • 它不能使用T[]存在的某些编译器优化 - 例如在循环期间消除边界检查

但是,添加到List<T>要容易得多,特别是因为它保留了备用空间 - 即它不必为了添加单个元素而调整整个数组的大小/ blit。