请原谅我英语不好。
我想读取大型XML文件(> 2GB)。我看了几篇关于它的帖子,想出了使用XmlReader的办法。
出于测试目的,我创建了一个500 XML的XML并编写了2段代码:
第一项:
MemoryStream mem = new MemoryStream();
Stream file = File.OpenRead(ofd.FileName);
file.CopyTo(mem);
mem.Position = 0;
file.Close();
XmlReader reader = XmlReader.Create(mem);
// work with reader第二项:
XmlReader reader = XmlReader.Create(ofd.FileName);
// work with readerofd.FileName :是xml文件路径的名称。
与读者合作:在这两种算法中是相同的。
我的RAM的速度是:15 of /秒,我的ssd的速度是:150 my /秒。
我认为第一种算法至少要快100倍。但在实际中,第二种算法速度更快。
第一个算法持续时间: 10500毫秒。
第二个算法持续时间: 9500毫秒。
为什么?是因为程序应该跨越第一个算法中的几个抽象层吗?
谢谢你提供的任何信息。
发布于 2015-02-06 09:57:54
XmlReader是一个只读前向的读取器,所以使用MemoryStream方法,您将精确地浏览整个文件两次。
尽管第二次运行是直接从内存中运行的,但是在预缓冲时已经有了“磁盘”惩罚,所以开销只是再次运行所有数据。
https://stackoverflow.com/questions/28362922
复制相似问题