XPath与DOM的性能

Cre*_*ing 14 performance xpath dom

有人会在不同场景中启发我对XPath和DOM之间的综合性能比较吗?我已经阅读了一些问题,比如xPath vs DOM API,哪一个有更好的性能XPath或querySelector?.他们都没有提到具体案件.这是我可以开始的一些事情.

  1. 不涉及迭代.getElementById(foobar)vs //*[@ id ='foobar'].前者经常比后者快吗?如果后者被优化怎么办,例如/ html/body/div [@ id ='foo']/div [@ id ='foobar']?
  2. 涉及迭代.getElementByX然后遍历子节点与XPath生成快照然后遍历快照项.
  3. 轴涉及.getElementByX然后遍历下一个兄弟姐妹vs // follow-sibling :: foobar.
  4. 不同的实现.不同的浏览器和库以不同方式实现XPath和DOM.哪个浏览器的XPath实现更好?

作为xPath与DOM API的答案,哪一个具有更好的性能,平均程序员可能会在以DOM方式实现复杂任务(例如涉及多个轴)时搞砸,同时保证优化XPath.因此,我的问题只关心可以通过两种方式完成的简单选择.

谢谢你的评论.

Mic*_*Kay 26

XPath和DOM都是规范,而不是实现.您无法询问有关规范性能的问题,只能询问有关具体实现的问题.快速XPath引擎和慢速引擎之间至少存在十分之一的差异:它们可能针对不同的事情进行了优化,例如,有些人会花费大量时间优化查询,假设它将被执行多次,对于单次执行可能是错误的做法.可以说,XPath的性能更多地取决于您使用的引擎,DOM的性能更多地取决于应用程序员的能力,因为它是一个较低级别的接口.当然,所有程序员都认为自己比平均水平要好得多......

  • 最常见的实现怎么样:Firefox、Chrome、IE、Opera?我认为他们以相当平衡的方式优化引擎。在这样的假设下,问题有答案吗? (3认同)

小智 6

此页面有一个部分,您可以在其中运行测试来比较两者并在不同浏览器中查看结果。例如,对于 Chrome,xpath 比 getElementById 慢 100%。

有关详细信息,请参阅getElementById 与 QuerySelector 。