XmlReader(Stream(fileName) -> MemoryStream) 比 XmlReader(文件名)慢



请原谅我糟糕的英语。

我想读取大型 XML 文件 (> 2GB(。我看到了几篇关于它的帖子,并想出了使用XmlReader的方法。

出于测试目的,我创建了一个 500MB 的 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 reader

ofd。文件名 :是 xml 文件的路径名称。

使用阅读器:在两种算法中是相同的。

我的内存速度是:15GB/秒我的固态硬盘的速度是:150MB/秒

我以为第一个算法会快至少 100 倍。但实际上,第二种算法更快。

第一个算法持续时间:10500毫秒。

第二种算法持续时间:9500毫秒。

为什么?是因为程序应该在第一个算法中跨越几个抽象层吗?

感谢您提供任何信息。

XmlReader是一个只进的读取器,因此使用MemoryStream方法,您将遍历整个文件两次。

即使第二次运行是直接从内存中,您在预缓冲时已经有"磁盘"损失,因此开销只是再次运行所有数据。

相关内容

  • 没有找到相关文章

最新更新