【问题标题】:Is it possible to preallocate memory for List<double>?是否可以为 List<double> 预分配内存?
【发布时间】:2013-03-21 22:01:11
【问题描述】:

是否可以使用 C# 在 .NET 4.5 中为 List&lt;double&gt; 预分配内存? 我正在将数百万条数据添加到我的列表中。我知道如果我可以在写入之前预先分配一些内存会更有效率。

有可能吗?

更新: 我正在从外部传感器捕获数据。 我不知道我会得到多少数据。这就是我使用列表的原因。

【问题讨论】:

  • 为此设置容量属性,也可以通过将所需容量传递给构造函数来完成。
  • 文档怎么不清楚?
  • 另外,动态分配最多对分配本身造成*2的惩罚,仍然是O(N)。通常你的实际处理会大大相形见绌。
  • @pst:因为当你有一个列表时,你想对它做一些简单的事情。将项目添加到末尾。从中间删除它们。等等。如果列表很大,这些操作效率不高。给某人这样的清单本质上是给他们一个炸弹,并希望他们不会触发它。如果您不想对您的收藏做清单性的事情,那么首先不要将其列入清单。
  • @pst:更糟糕的是(1)问题表明完全缺乏研究,(2)尽管我同意提前考虑性能是明智的,尽管我们知道没有关于提问者将如何处理这些数据,担心节省重新分配但没有考虑“首先将所有这些都放入列表中是否明智”,这有点过早优化?

标签: c# .net list memory


【解决方案1】:

琐碎:

var list = new List<double>(2000000);

为 2M 双打分配空间。

【讨论】:

  • @user166390 这让我笑了。
猜你喜欢
  • 2016-05-31
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
相关资源
最近更新 更多