属性和元素性能

时间:2011-12-14 15:53:45

标签: php xml performance

我正在使用PHP和SimpleXML,并且想知道哪个会更快并且使用更少的内存。我并不关心元素vs属性,而是关注PHP的执行情况。有10个部门和20个不同类别。文件可以属于多个部门和类别。

<file dep1="1" dep2="1" dep3="0" cat1="0" cat2="0" cat3="1" path="\path\to\file">
    file description
</file>

<file path="\path\to\file">
    <departments dep1="1" dep2="1" dep3="0" />
    <categories cat1="0" cat2="0" cat3="1" />
    <description>file description</description>
</file>

3 个答案:

答案 0 :(得分:1)

对前N个部门使用名为dep1,dep2,dep3,...的属性(或元素)并不是一个好的XML设计。这与机器性能无关,它只是使数据可用,处理它的代码易于编写,结构可扩展。

重复数据应该是重复的同名元素。

答案 1 :(得分:0)

如果我理解你的问题:

除非你的最终XML是几兆字节,否则这不会造成问题。

您的性能问题在于分析和处理数据的方式,而不是XML文件的大小。

答案 2 :(得分:0)

表现几乎相同。 DOM中的属性节点和元素节点基本上是相同的数据结构,它们是从同一个基类派生出来的,会执行相同的。

重点是:XML结构与您的数据匹配。这是你应该使用的那个。

我倾向于使用这样的东西,这对我来说最自然:

<file>
    <path>\path\to\file</path>
    <description>file description</description>
    <departments>
        <dep id="1" />
        <dep id="2" />
        <!-- the ones that are 0 are omitted -->
    </departments>
    <categories>
        <cat id="3" />
    </categories>
</file>