首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlReader(fileName) -> MemoryStream比XmlReader(FileName)慢

XmlReader(fileName) -> MemoryStream比XmlReader(FileName)慢
EN

Stack Overflow用户
提问于 2015-02-06 09:50:41
回答 1查看 773关注 0票数 0

请原谅我英语不好。

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

出于测试目的,我创建了一个500 XML的XML并编写了2段代码:

第一项:

代码语言:javascript
复制
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

第二项:

代码语言:javascript
复制
XmlReader reader = XmlReader.Create(ofd.FileName);
// work with reader

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

与读者合作:在这两种算法中是相同的。

我的RAM的速度是:15 of /秒,我的ssd的速度是:150 my /秒。

我认为第一种算法至少要快100倍。但在实际中,第二种算法速度更快。

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

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

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

谢谢你提供的任何信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-06 09:57:54

XmlReader是一个只读前向的读取器,所以使用MemoryStream方法,您将精确地浏览整个文件两次。

尽管第二次运行是直接从内存中运行的,但是在预缓冲时已经有了“磁盘”惩罚,所以开销只是再次运行所有数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28362922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档