다른 시나리오에서 XPath와 DOM 간의 포괄적 인 성능 비교를 나에게 알려 줄 수 있습니까? 나는 xPath vs DOM API, which one has a better performance과 XPath or querySelector?처럼 몇 가지 질문을 읽었습니다. 그들 중 누구도 특정 사례를 언급하지 않았습니다. 여기 내가 시작할 수있는 일이 있습니다.XPath 대 DOM의 성능
- 반복 작업이 필요하지 않습니다. getElementById (foobar) vs // * [@ id = 'foobar']. 전자는 후자보다 끊임없이 빠릅니까? 후자가 최적화되면 어떻게됩니까?/html/body/div [@ id = 'foo']/div [@ id = 'foobar']?
- 반복이 필요합니다. getElementByX는 자식 노드를 통과하고 XPath는 스냅 샷을 생성 한 다음 스냅 샷 항목을 통과합니다.
- 축이 관련되어 있습니다. getElementByX는 다음 형제 자매 vs // following-sibling :: foobar를 트래버스합니다.
- 다른 구현입니다. 다른 브라우저와 라이브러리는 XPath와 DOM을 다르게 구현합니다. 어떤 브라우저의 XPath 구현이 더 좋습니까? xPath vs DOM API, which one has a better performance에서 응답이 말하듯 XPath를 최적화 보장하면서 DOM 방식으로 복잡한 작업 (예를 들면, 여러 관련 축)을 구현할 때
평균 프로그래머 망칠 수있다. 따라서 제 질문은 두 가지 방법으로 모두 수행 할 수있는 간단한 선택에만 관심이 있습니다.
모든 의견을 주셔서 감사합니다.
성능 및 최적화와 관련하여 거의 모든 질문과 마찬가지로 구체적인 상황과 내용에 따라 다릅니다. 대답은 "데이터로 앱 프로필을 작성하고 가장 적합한 방법을 선택하십시오"입니다. 또한 너무 많은 일반적인 질문을했습니다. 이 질문은 아마도 "진짜 질문이 아닙니다"로 끝나야합니다. 다른 사람이 그렇게 생각하면 투표에 참여하여 그렇게 할 것입니다. –
개인적으로 DOM은 일반적으로 XPath 또는 선택기 API 구현 (예 : Firefox)보다 10 배 이상 빠릅니다.그러나 XPath는 컨텍스트 노드를 허용하기 때문에 DOM이있는 "안정된"부모 노드를 선택하고 나머지 작업에는 XPath를 사용하는 것이 가장 좋습니다. 이것은 고성능과 견고성이 모두 있습니다. –
XPath는 비 DOM API에서 빌드 될 수 있습니다. 예를 들어, vtd-xml의 xpath 구현은 가상 토큰 설명자 위에 구축됩니다. –