将大对象列表保留在内存中或从文件.NET中读取

时间:2012-01-26 18:18:58

标签: winforms performance list memory

我需要读取一个Object的大列表(每个对象包含2个String和1个Int32)(我从XML WebPage中提取这些对象),它应该包含10000个对象。

我需要从这个列表中获取每分钟约20条记录。

我知道在性能方面和内存安全方面,最好将此List保留在内存中并记录这20条记录(每分钟)或从WebPage下载Xml,每分钟从Local Disk读取它并找到那些20条记录。

任何其他解决方案也将被接受:)

更新:忘了说我正在谈论一个Winform C#应用程序

2 个答案:

答案 0 :(得分:1)

优化的第一条规则是在优化之前进行测量。

当你将所有对象加载到内存中时它会消耗多少个念念?您的应用程序的其余部分需要多少内存?机器有多少内存?您是在32位还是64位地址空间中运行?其他所需应用程序同时需要多少内存?

一旦您回答了这些问题,您就可以开始分解您的优化方法。在这种情况下,你每分钟需要20条记录,任何20条记录?你需要遍历所有10,000才能找到20吗? XML文件多久更改一次?

P.S。查看XmlReader与XmlDocument以解析XML文件。

答案 1 :(得分:0)

为了提高性能,最好避免磁盘I / O.

对于内存,两个解决方案都是相同的,除非您一次处理一行文件(这将导致可怕的性能,因为您将无法对结果进行散列/索引)。

如果有“钥匙”,我会将它们保存在字典中。

如果有疑问,请说明。