为什么 generic.list 比数组慢?
Nirmal
问问题
1515 次
2 回答
5
通用列表比数组稍慢,但在大多数情况下您不会注意到。大多数情况下,它与稍微复杂一点的查找有关:据说 List 使用了“幕后”的数组,但不能保证以与数组相同的方式将节点保留在相邻内存中。
但是,我在 2005 年看到了一些基准测试(现在找不到链接)并且差异非常小。
此外,与数组相比,列表具有许多重要优势:主要是添加或删除项目很简单。当您不知道需要多少项目或该数字会发生变化时,使用列表会容易得多。在这些情况下(老实说,大部分时间都是这样),您可能不应该使用数组。
于 2008-11-06T17:27:05.320 回答
3
在读取性能方面,有两个因素:
- 一个额外的取消引用(
List<T>
即将包含一个T[]
字段,并且必须取消引用它) - 它不能使用一些存在的编译器优化
T[]
- 例如消除循环期间的边界检查
但是,添加到 a 中要容易得多List<T>
,特别是因为它保留了备用空间 - 即它不必为了添加单个元素而调整整个数组的大小/blit。
于 2008-11-06T22:01:28.323 回答