为什么generic.list比数组慢?
答案 0 :(得分:5)
通用列表比数组略慢,但在大多数情况下你并没有注意到。大多数情况下,它与查找稍微复杂一点:据说List使用“引擎盖下”的数组,但并不能保证在数组中以相同的方式将节点保存在相邻的内存中。
然而,我在2005年看到了一些基准测试(现在找不到链接),差异是非常小。
此外,该列表与数组相比具有许多重要优势:主要是添加或删除项目很简单。当您不知道需要多少项目或者该数字会有所不同时,使用列表会容易得多。在那些情况下(老实说,大多数情况下),你可能不使用数组。
答案 1 :(得分:2)
就读取性能而言,有两个因素:
List<T>
将包含T[]
字段,并且必须取消引用它)T[]
存在的某些编译器优化 - 例如在循环期间消除边界检查但是,添加到List<T>
要容易得多,特别是因为它保留了备用空间 - 即它不必为了添加单个元素而调整整个数组的大小/ blit。