针对属性或元素的XElement LINQ查询的性能

时间:2010-07-15 15:08:31

标签: performance search linq-to-xml

我正在使用LINQ to XML来搜索下面的XML(最终文档的一小部分),最初是在国家名称上搜索,并且想知道将名称创建为子元素而不是属性<是否会有任何性能优势/ p>

<Countries>
    <Country name="United Kingdom">
        <Grades>
            <Grade>PA</Grade>
            <Grade>FE</Grade>
        </Grades>
    </Country>
</Countries>

由于

1 个答案:

答案 0 :(得分:1)

就LINQ处理时间而言,差异应该非常小,这取决于文档的形状。如果你正在寻找具有许多属性的元素上的属性,那么它会变慢,所以如果你知道你将只有那个属性,那么它会很快。元素也是如此。因此,如果上面的示例具有代表性,那么属性就越快,因为只有一个属性,但如果将名称移动到元素,则会有两个元素。 可能更重要的第二个考虑因素是解析速度。您需要先解析文档才能搜索它。解析速度主要取决于它必须处理的字符数。因此输入文档越长(以字节为单位),解析它所需的时间就越长。在这个意义上,属性比元素(通常)略短。此外,解析器必须完成的簿记对于属性而言要比元素少(特别是如果元素上只有一个属性)。 但与性能有关:测量它。这是最终的答案。