我需要读取一个Object的大列表(每个对象包含2个String和1个Int32)(我从XML WebPage中提取这些对象),它应该包含10000个对象。
我需要从这个列表中获取每分钟约20条记录。
我知道在性能方面和内存安全方面,最好将此List保留在内存中并记录这20条记录(每分钟)或从WebPage下载Xml,每分钟从Local Disk读取它并找到那些20条记录。
任何其他解决方案也将被接受:)
更新:忘了说我正在谈论一个Winform C#应用程序
答案 0 :(得分:1)
优化的第一条规则是在优化之前进行测量。
当你将所有对象加载到内存中时它会消耗多少个念念?您的应用程序的其余部分需要多少内存?机器有多少内存?您是在32位还是64位地址空间中运行?其他所需应用程序同时需要多少内存?
一旦您回答了这些问题,您就可以开始分解您的优化方法。在这种情况下,你每分钟需要20条记录,任何20条记录?你需要遍历所有10,000才能找到20吗? XML文件多久更改一次?
P.S。查看XmlReader与XmlDocument以解析XML文件。
答案 1 :(得分:0)
为了提高性能,最好避免磁盘I / O.
对于内存,两个解决方案都是相同的,除非您一次处理一行文件(这将导致可怕的性能,因为您将无法对结果进行散列/索引)。
如果有“钥匙”,我会将它们保存在字典中。
如果有疑问,请说明。