2011-12-14 2 views
0

Я использую PHP и SimpleXML и задавался вопросом, что будет быстрее и использовать меньше памяти. Меня не интересует атрибут element 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

+0

Я сделал несколько тестов (не эксперт по бенчмаркингу). Создал два xml-файла с 1000 элементами каждый. Итерируется 100 раз (100000 итераций). На моей машине первый метод (с отпечатками и кошками в качестве атрибутов элемента файла занял в среднем 0,0169 секунды, а второй метод занял 0,0417 секунды. Хотя второй метод занимает немного больше времени, он лучше описывает данные. 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

Файл не будет более 1 МБ – Akash

1

Использование атрибутов (или элементов), с именем dep1, DEP2, dep3 ... для первых N отделов не хороший дизайн XML. Это не имеет ничего общего с производительностью машины, все дело в том, чтобы использовать данные, код, который легко обрабатывает, и структуру расширяемую.

Повторяющиеся данные должны быть в повторяющихся элементах с одинаковым именем.