2013-06-09 2 views
0

계층 적으로 구성된 데이터 세트의 xml 스키마를 적어 둡니다. 정보 검색을 위해 Nokogiri가 분석해야합니다. 내 질문은 성능 관점에서 계층 구조를 존중하거나 계층화하는 것이 더 나은가? 예. Nokogiri : ids 대 계층 구조 xpath 성능

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

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

또는

는 여러 개의 속성까지 가독성과 유지 보수에 관한 한 피해야한다는 것을 알고 있지만, 성능은 내 우선 순위입니다.

+0

무엇의 성능? 그것은 당신이 문서로 무엇을 할 것인지에 달려 있습니다. –

+0

또한 문서의 크기에 따라 다릅니다. –

+0

나쁜 것, 수행 할 가능성이있는 작업은 "id_1 = x 및 id_2 = y 인 모든 항목을 선택"입니다. – gcedo

답변

1

절대 성능이 가장 빠르며 문서가 클 경우 XPath를 전혀 사용하지 않으려 고합니다. SAX (또는 Reader) 필터가 가장 빠릅니다.

하지만 노코 기리 문서를 구문 분석하고 XPath를위한 DOM을 만들 수있을 위하여려고하는 경우에, 당신이 사용하는 쿼리 여부가 큰 차이를 만들 것입니다 생각하지 않습니다

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