Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Performance of XPath vs DOM

Would anyone enlighten me some comprehensive performance comparison between XPath and DOM in different scenarios? I've read some questions in SO like xPath vs DOM API, which one has a better performance and XPath or querySelector?. None of them mentions specific cases. Here's somethings I could start with.

  1. No iteration involved. getElementById(foobar) vs //*[@id='foobar']. Is former constantly faster than latter? What if the latter is optimized, e.g. /html/body/div[@id='foo']/div[@id='foobar']?
  2. Iteration involved. getElementByX then traverse through child nodes vs XPath generate snapshot then traverse through snapshot items.
  3. Axis involved. getElementByX then traverse for next siblings vs //following-sibling::foobar.
  4. Different implementations. Different browsers and libraries implement XPath and DOM differently. Which browser's implementation of XPath is better?

As the answer in xPath vs DOM API, which one has a better performance says, average programmer may screw up when implementing complicated tasks (e.g. multiple axes involved) in DOM way while XPath is guaranteed optimized. Therefore, my question only cares about the simple selections that can be done in both ways.

Thanks for any comment.

like image 430
Crend King Avatar asked Mar 12 '11 00:03

Crend King


People also ask

Is XPath fast?

XPath LocatorIt is slowest among all locators. But it provides you reliable ways to locate web elements. XPath engines are different in each browser, hence make them inconsistent across browsers. That means if you write XPath for your application in Chrome browser, it may not work on IE.

Is XPath slow?

They are considered, because (in general) they are slower. This was true especially in the old versions of Internet Explorer, but now the difference is not so relevant. Sometimes XPath is quite faster.

Is XPath efficient?

In particular, the XPathDocument class is designed to be more efficient for evaluating XPath expressions than using (the DOM-based) XmlDocument class. The reason is that XPathDocument is a read-only representation of an XML document, while a DOM implementation also covers changing the document.

Does XPath use DOM?

The XPath DOM extends the document order of the DOM Core to include the XPathNamespace nodes. Element nodes occur before their children. The attribute nodes and namespace nodes of an element occur before the children of the element. The namespace nodes are defined to occur before the attribute nodes.


1 Answers

XPath and DOM are both specifications, not implementations. You can't ask questions about the performance of a spec, only about specific implementations. There's at least a ten-to-one difference between a fast XPath engine and a slow one: and they may be optimized for different things, e.g. some spend a lot of time optimizing a query on the assumption it will be executed multiple times, which might be the wrong thing to do for single-shot execution. The one thing one can say is that the performance of XPath depends more on the engine you are using, and the performance of DOM depends more on the competence of the application programmer, because it's a lower-level interface. Of course all programmers consider themselves to be much better than average...

like image 197
Michael Kay Avatar answered Oct 18 '22 15:10

Michael Kay