簡體   English   中英

優化內存使用率和最快的方式來存儲和檢索數百萬個對象

[英]Optimize memory usage and fastest way to store and retrieve millions of objects

在WPF中,我想以低內存使用率有效地存儲數百萬個對象並非常快速地檢索它。 以下是我的示例課程。

public class CellInfo

{

public int A { get; set; }

public int B { get; set; }

public string C { get; set; }

public object D { get; set; }

public bool E { get; set; }

public double F { get; set; }

public ClassA G { get; set; }

}

我想存儲數百萬個CellInfo對象,並且每個對象都有自己的標識。 我想使用該身份將其取回。 如果未定義CellInfo實例的屬性,則需要返回默認值,該默認值將存儲在靜態字段中。

所以我只想存儲已定義的CellInfo對象的屬性,其他我不想保留在內存中並可以從靜態變量中檢索的屬性。

因此,有人可以建議我以低內存使用率來存儲和檢索數百萬個對象的最快方法嗎?

注意:我不希望任何其他軟件安裝和數據庫或任何外部文件來存儲此文件。

您尚未指明哪個字段是“自己的身份”,所以我假設了Guid Identity 以該身份為關鍵字的Dictionary應該提供最快的檢索速度。

Dictionary<Guid, CellInfo> cells = new Dictionary<Guid, CellInfo>();

如果已經有了數據,則可以使用.ToDictionary()從可枚舉中投影鍵/值映射。

如果您需要同時更改和訪問多個線程中的集合(或者如果您打算使集合靜態化),則可以使用ConcurrentDictionary換出以解決線程安全性問題:

在訪問元素之前,您需要通過ContainsKey (或TryGet )確定字典中是否存在TryGet 如果不是,請使用默認元素。 因此建議您隱藏基礎詞典的實現,並通過封裝助手強制使用者,該助手會為您執行此檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM