2009-07-09 36 views
3

有谁知道.NET数组类/库会将其内容分页到磁盘?数组哪个页面到磁盘

这个想法是能够使用它作为一个正常的数组,但该类使用更少的RAM(以避免超过2GB的数据超出内存异常)。理想情况下,类将实现的一个:

  • System.Collections.Generic.IList
  • System.Collection.IList

所以它很容易插槽到现有代码 - 与一个DataGridView希望工作(虽然我可能还需要实现“虚拟模式”)。

任何想法非常感谢!

+0

我认为这种功能不存在或者在其他地方没有实现是令人难以置信的。我知道很多其他人说他们想要类似的东西。这里肯定有一些钱;-)我期待着使用SQL Compact版本,但这不是我所希望的。 – 2009-07-10 14:19:31

回答

2

我还没有遇到过这样的事情,但我想这是因为它很少需要。毕竟,数据库表(在SQL Server或任何其他数据库中)本质上是一个基于磁盘的数组。

您可以在数据库表中编写一个IList <>包装器。抛出一些缓存,你有一个完美的基于磁盘的阵列。

2

除非你正在处理固定长度的记录(并且即使存在问题),你也会遇到很多处理2GB数据的问题,比如使阵列使用很多的数据 -

  • 的IndexOf()
  • InsertAt()
  • RemoveAt移除()
  • 排序()

有没有[R eason数据库不起作用?

+0

嗨, 感谢您的观点,我确实了解潜在的性能影响 - 特别是IndexOf()。其他的如RemoveAt()可能会很快,这取决于实现,例如,该类可以从它的内部索引中删除该行,但将该行留在磁盘上(避免重新洗牌但最终消耗不必要的空间)。 应用程序在桌面上本地运行,无法访问SQL Server。我正在考虑一个本地的Compact数据库,但对于我已经拥有的代码库来说这是不可行的(很多重做)。 – 2009-07-09 12:15:34