2009-07-09 30 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