2011-12-14 156 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設計。這與機器性能無關,只需要使數據可用,處理它的代碼易於編寫,並且結構可擴展。

重複的數據應該重複使用相同名稱的元素。