2011-04-20 58 views
0

我必须开发一个函数,它将字符串(xml字符串)作为输入并返回分析结果(以对象格式)。Xmlparsing的空间和时间估计

我新的C#.NET所以从净我发现,有方法可以做到这个数字:

  1. XML序列化
  2. 的Xml的TextReader
  3. 的XmlDocument
  4. 的XDocument(和等等)

我想知道哪种方式更好(在时间和空间方面)考虑到每秒这个功能有解析平均10-20个字符串(平均1000-2000个字符)。

回答

1

对于您计划处理的数据量,几乎无所谓您使用的是什么。编写有效的代码/看起来很好,而不是测量 - 如果你的每秒约40K是合理的,你会发现任何方法之间的任何可衡量的差异。

XmlSerialzation是最容易使用的,并且如果您可以选择XML格式,则需要的代码量最少。 XmlDocument和XDocument是顶级XmlReader中的更高级别的概念,所以如果您寻找最高速度的原始XmlReader会为您提供最多的选择。

+0

那么从你的角度来看如果我使用XmlReader的工作量将会比XmlSerialization更多,但是它会比XmlSerialization快吗? – vrajs5 2011-04-20 05:02:24

+1

@ vrajs5,使用XMLReader,您可以获得更好的内存使用和更快的加载速度,因为其他方法都是基于它构建的,但它需要最大的努力。从理论角度来看,所有XML读取方法都具有相同的速度 - 它们都需要从内存消耗的角度读取整个XML。XmlReader本身并不会消耗太多内存,因为它不需要保留关于文档外部的任何知识当前元素的其他方法不能解决必须构建XML树或对象的其他方法。 – 2011-04-20 06:02:41

+0

Tnx ..我想我必须用XmlReader和XmlSerialzation创建atleast 2方法一...并检查结果... – vrajs5 2011-04-20 06:13:34

0

只需使用MSXML。配置文件并测量性能,然后然后决定您是否需要备用解决方案。

using MSXML; 
DOMDocument30 doc = new DOMDocument30(); 
doc.async = false; 
if (doc.load("somefile.xml")) 
{ 
    // process document here 
} 

一旦你有一些具体的测量,那么你可以开始查看信息,在this msdn article但是你可能根本找不到它。

+0

谢谢..事情是我不能创建多个解决方案,并衡量它...我知道你在说什么是衡量表现的最佳方法之一..但我想整体的想法... – vrajs5 2011-04-20 04:34:18

+1

-1的建议使用MSXML(因为它在使用.Net运行时的过程中不支持MSXML的使用),+1对提列文分析以及关于在.Net世界中处理XML的文章的链接。因为结果平衡为0. – 2011-04-20 04:42:18

2

XmlTextReader会逐行扫描文件,因此它可以处理非常大的文件,并且在您不需要解析整个xml时非常有用。

XmlDocument在加载文件时构建了一个DOM,该文件非常容易浏览,尽管非常耗时\ mem在大xml上消耗。