LINQ to XML查询的速度与大型xml字符串上的Regex相比?

时间:2012-02-02 15:07:38

标签: regex linq linq-to-xml

我有以下查询:

 Dim elementsWithPossibleCCNumbers As IEnumerable(Of XElement) = 
 xmlTree.Descendants().
 Where(Function(element) element.Attributes().
 Where(Function(attribute) attribute.Value.Length >= 13 
                           AndAlso attribute.Value.Length <=    
 16).
 Where(Function(attribute) Long.TryParse(attribute.Value, numeric)).Count() = 1).    
 [Select](Function(x) x)

我最初使用Regex搜索属性,但我开始使用LINQ to XML,因为社区中的其他人告诉我这是更好的路线。我唯一担心的是,对于更大的XML字符串,LINQ to XML查询的性能如何,还是比Regex快?

我可以提高查询速度吗?

1 个答案:

答案 0 :(得分:4)

主要关注的是regexp从根本上说是处理XML文件的错误工具。将正则表达式转换为向您返回错误结果非常容易,例如添加CDATA部分。到目前为止速度是次要问题:甚至无法判断XML是否与正则表达式结合良好,更不用说正确处理极端情况了。

现在回答你的问题,速度很大程度上取决于正则表达式的结构。可以构造一个文件/正则表达式组合,其中regexp会更快,另一对文件/ regexp,其中LINQ2XML路由会更快。但LINQ2XML仍然会相当快,而且很可能更正确。