2013-06-09 2 views
0

Мне нужно записать схему xml для набора данных, который иерархически организован. Он должен быть проанализирован Нокогири для получения информации. Мой вопрос, с точки зрения производительности, лучше уважать иерархию или сгладить ее? .Nokogiri: ids Vs иерархия xpath performance

<item_1 id="id_1"> 
    <item_2 id="id_2">value</item_2> 
</item_1> 

или

<item id_1="id_2" id_2="id_2">value</item> 

Я знаю, что несколько атрибутов следует избегать, насколько это читаемость и ремонтопригодность обеспокоены, но производительность является моим приоритетом.

+0

Выполнение чего? Это зависит от того, что вы собираетесь делать с документом. –

+0

Это также зависит от размера документа. –

+0

Неплохо, операции, которые могут быть выполнены, «выберите все элементы, где id_1 = x и id_2 = y». – gcedo

ответ

1

Если вы хотите, чтобы абсолютная максимальная производительность и документы были большими, вы, вероятно, вообще не хотите использовать XPath. Фильтр SAX (или Reader) будет самым быстрым.

Но если вы собираетесь иметь Nokogiri разобрать документ и создать DOM для XPath, я не думаю, что он будет делать большой разницы запросов ли вы с помощью:

doc.xpath('/item1[@id=x]/item2[@id=y]') #first case 

или

doc.xpath('/item[@id_1=x and @id2=y]') #second case 

Конечно, сравнение этих двух решений с вашими реальными данными - единственный способ узнать наверняка.

+0

Я тоже думал, что выступления будут почти такими же, я просто хотел иметь второй опиом. К несчастью, на этом этапе проекта у меня нет доступа к реальным данным, я постараюсь сделать некоторые примеры игрушек, чтобы сравнить это. – gcedo

+0

Кроме того, если вы собираетесь использовать чистую скорость запроса, не воссоздавайте DOM каждый раз. Создайте его один раз и повторно используйте его для запросов. –

+0

Спасибо, я дам тебе щедрость. – gcedo