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

Winforms 将大对象列表保存在内存中或从.NET文件中读取,winforms,performance,list,memory,Winforms,Performance,List,Memory,我需要读取一个大的对象列表(每个对象包含2个字符串和1个Int32)(我从XML网页中提取这些对象),它应该包含大约10000个对象 我需要从这个列表中每分钟录制20张唱片 我想知道,从性能和内存安全的角度来看,最好将此列表保存在内存中,并获取这20条记录(每分钟),或者从网页下载Xml,每分钟从本地磁盘读取并查找这20条记录 任何其他解决方案也将被接受:) 更新:忘了说我说的是Winform C应用程序为了提高性能,您最好避免磁盘i/O 对于内存,除非一次处理一行文件,否则这两种解决方案都是相

我需要读取一个大的对象列表(每个对象包含2个字符串和1个Int32)(我从XML网页中提取这些对象),它应该包含大约10000个对象

我需要从这个列表中每分钟录制20张唱片

我想知道,从性能和内存安全的角度来看,最好将此列表保存在内存中,并获取这20条记录(每分钟),或者从网页下载Xml,每分钟从本地磁盘读取并查找这20条记录

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


更新:忘了说我说的是Winform C应用程序

为了提高性能,您最好避免磁盘i/O

对于内存,除非一次处理一行文件,否则这两种解决方案都是相同的(这将带来糟糕的性能,因为您无法对结果进行散列/索引)

如果有一把“钥匙”,我会把它们保存在字典里


如果有疑问,请概述。

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

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

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


另外,请查看XmlReader与XmlDocument对XML文件的解析。

问题在于,该机器的内存最大为512 1GB,大多数情况下是虚拟机。它在32位上运行。是的,我需要迭代1000次才能找到20条记录(但不是任何20个,我需要根据ID字段选择它们。在我使用XmlDocument时,Xml每15-20分钟更改一次,但我也要去看XmlReader。谢谢我阅读了关于XmlDocument的内容,我必须在我的情况下使用XmlReader!!现在的问题是……我如何才能在XmlReader中更改所有内容?:)当您将整个XML文件解析为比XmlDocument更高效的数据结构时,需要使用多少内存?请查看XmlWriter以修改输入XML文件。