2011-12-14 19 views
0

私はPHPとSimpleXMLを使用していますが、どちらが速くなり、メモリを少なくするのか不思議でした。私は要素対属性には関心がありませんが、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

+0

私はベンチマークを行いました(ベンチマークでは専門家ではありません)。それぞれの要素が1000 の2つのXMLファイルを作成しました。 100回繰り返した(100000反復)。私のマシンでは、最初の方法(ファイル要素への属性としてのdepとcatの平均値は0.0169秒で、2番目の方法では0.0417秒でしたが2番目の方法では少し時間がかかりますが、 middleground ... – Akash

答えて

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ファイルのサイズよりもデータを分析して処理する方法にあります。

+0

ファイルは1MB以上ではありません – Akash

1

属性(または要素)を使用して命名DEP1、DEP2、dep3、...最初のN部門のためのさ良くないXMLデザイン。これはマシンのパフォーマンスとは関係がなく、データを使用可能にすること、書きやすいように処理するコード、構造を拡張することに関することです。

繰り返しデータは同じ名前の繰り返し要素にする必要があります。