代码之家  ›  专栏  ›  技术社区  ›  Darren Lewis

对属性或元素执行Xelement Linq查询

  •  1
  • Darren Lewis  · 技术社区  · 14 年前

    我正在使用linq-to-xml搜索下面的XML(最终文档的一小部分),最初搜索的是国家名称attibute,我想知道在将名称创建为子元素而不是属性时是否有任何性能优势。

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

    谢谢

    1 回复  |  直到 14 年前
        1
  •  1
  •   Vitek Karas MSFT    14 年前

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