保存和加载字典。改善记忆足迹

时间:2012-07-16 00:37:25

标签: c# serialization deserialization

长时间观察者,这是我的第一篇文章,所以请放轻松我。我环顾四周,但我的查询非常具体,我在其他地方找不到。

我有一个由2个控件组成的应用程序。

  • 左侧的控件包含一个树视图,显示从XML文件映射的搜索。每个搜索都有一个关联的GUID。
  • 右侧的控件显示数据网格,我从树视图通过字典(Guid< - >数据集)获取的信息。

当用户点击树视图中的节点时,我的应用程序将确定与搜索链接的GUID,并显示相关的数据集,该数据集将被展平并显示在数据网格上。

我分别在退出/加载应用程序时保存(序列化)并加载(反序列化)词典。

我最近进行了一些内存分析,对于较大的搜索,对于用户机器的有限容量,字典的内存占用量可能非常大(200mb),我真的需要理清。

我想知道是否有人知道如何实现这一点。

我正在考虑将Serialisable Dictionary拆分为组成数据集,并将每个数据集分别存储在硬盘驱动器上(可能使用GUID作为文件名)。然后,使用每个Node.Click事件对保存的数据集进行反序列化,并显示在网格视图中。我担心的是每次点击事件之间可能会暂停,因为它会保存旧搜索并加载新搜索。

1 个答案:

答案 0 :(得分:1)

简单的回答,将字典和数据集扔到Sqlite文件中。 (或其他数据库)它会慢一点,但我希望比你能在合理的时间内手动编码的代码更快。如果使用正确,db层将执行内存缓冲和缓存,以使ui更具响应性。