2011-12-14 158 views
0

我正在使用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> 
+1

您是否尝试用每个基准测试性能? – rdlowrey 2011-12-14 15:57:16

+0

我做了一些基准测试(不是基准测试专家)。创建两个xml文件,每个文件有1000个个元素。迭代100次(100000次迭代)。在我的机器上,第一种方法(将dep和cats作为文件元素的属性的平均时间为0.0169秒,第二种方法的时间为0.0417秒,尽管第二种方法需要稍长一点,但它更好地描述了数据。 middleground ... – Akash 2011-12-14 19:44:00

回答

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> 
0

如果我明白你的问题正确:

除非你最终的XML是几兆沉重,这不应该成为问题。

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

1

使用属性(或要素)命名DEP1,DEP2,DEP3,......最初的N个部门是不好的XML设计。这与机器性能无关,只需要使数据可用,处理它的代码易于编写,并且结构可扩展。

重复的数据应该重复使用相同名称的元素。