XML数据读取方式性能比较(一)
2010-08-12 09:19
183 查看
几个月来,疑被SOA,一直在和XML操作打交道,SQL差不多又忘光了。现在已经知道,至少有四种常用人XML数据操作方式(好像Java差不多),不过还没有实际比较过这些方式各有哪些特点或优劣。正好看到网上也没有这方面的实验,偶来总结一下。
测试开始先读取XML源,用一个比较大的RSS文件链接,复制到项目bin/debug目录下。
一、XmlDocument 方式
代码
测试结果:
小结一下自己的认识,XmlDocument的操作基本按W3C的DOM操作方式,不过要将全部节点解析成对象加载到内存中,往往造成很大浪费。所以微软自己的编程规范也不推荐用它。这里由于读取了所有节点,可能因此性能和Navigator方式相差不大。在三种随机读取方式中,Xml Linq性能最高,只是方法名有点别扭。XmlTextReader方式是所谓的SAX,只读向前,无疑性能最高,不过实现上麻烦了不少,要比较精确的控制访问逻辑,也无法用匿名类存储数据。
.Net 3.5发布Xml Linq可以很好地取代前两种方式,通常情况下,最好用它。只有个别场合,如果对性能要求极高,或者读取Xml数据量太大不能一下子下载或读取到内存中,那就只好痛苦委身于XmlTextReader了。
转帖地址:/article/4801647.html
测试开始先读取XML源,用一个比较大的RSS文件链接,复制到项目bin/debug目录下。
Stream xmlStream = new MemoryStream(File.ReadAllBytes(path));
一、XmlDocument 方式
代码
1 static IList testXmlLinq() 2 { 3 var xd = XDocument.Load(xmlStream); 4 var list = from node in xd.Elements("channel").Descendants("item") 5 select new 6 { 7 Title = node.Element("title").Value, 8 Link = node.Element("link").Value, 9 Description = node.Element("description").Value, 10 Content = node.Element("content").Value, 11 PubDate = node.Element("pubDate").Value, 12 Author = node.Element("author").Value, 13 Category = node.Element("category").Value 14 }; 15 return list.ToList(); 16 }
测试结果:
XmlDocment | 47ms |
XPathNavigator | 42ms |
XmlTextReader | 23ms |
Xml Linq | 28ms |
.Net 3.5发布Xml Linq可以很好地取代前两种方式,通常情况下,最好用它。只有个别场合,如果对性能要求极高,或者读取Xml数据量太大不能一下子下载或读取到内存中,那就只好痛苦委身于XmlTextReader了。
转帖地址:/article/4801647.html
相关文章推荐
- XML数据读取方式性能比较(一)
- XML数据读取方式性能比较(二)
- XML数据读取方式性能比较(一)
- XML数据读取方式性能比较(二)
- XML数据读取方式性能比较(一)
- XML数据读取方式性能比较(一) (转)
- XML数据读取方式性能比较(一)
- 数据库和XML数据读取性能比较。
- 数据库和XML数据读取性能比较。
- 数据库和XML数据读取性能比较
- XML语法手册、数据读取方式大全
- python读取数值文本数据比较--一般读取方式 Vs numpy
- Action Script读取XML内容和Socket方式发送数据
- linux下实现web数据同步的四种方式(性能比较)
- java 读取大数据文件,处理大数据文件性能比较?
- XML四种解析方式性能比较
- spark读取kafka数据(两种方式比较及flume配置文件)
- ADO.NET 中 DataReader 各种读取方式性能比较/测试
- 以XML的方式读取Excel文件数据
- 两个Repeater嵌套实现动态菜单(ado.net+sql和xml+Linq两种读取数据方式)