【发布时间】:2013-03-21 22:01:11
【问题描述】:
是否可以使用 C# 在 .NET 4.5 中为 List<double> 预分配内存?
我正在将数百万条数据添加到我的列表中。我知道如果我可以在写入之前预先分配一些内存会更有效率。
有可能吗?
更新: 我正在从外部传感器捕获数据。 我不知道我会得到多少数据。这就是我使用列表的原因。
【问题讨论】:
-
为此设置容量属性,也可以通过将所需容量传递给构造函数来完成。
-
文档怎么不清楚?
-
另外,动态分配最多对分配本身造成*2的惩罚,仍然是O(N)。通常你的实际处理会大大相形见绌。
-
@pst:因为当你有一个列表时,你想对它做一些简单的事情。将项目添加到末尾。从中间删除它们。等等。如果列表很大,这些操作效率不高。给某人这样的清单本质上是给他们一个炸弹,并希望他们不会触发它。如果您不想对您的收藏做清单性的事情,那么首先不要将其列入清单。
-
@pst:更糟糕的是(1)问题表明完全缺乏研究,(2)尽管我同意提前考虑性能是明智的,尽管我们知道没有关于提问者将如何处理这些数据,担心节省重新分配但没有考虑“首先将所有这些都放入列表中是否明智”,这有点过早优化?