有人会在不同场景中启发我对XPath和DOM之间的综合性能比较吗?我已经阅读了一些问题,例如xPath vs DOM API, which one has a better performance和XPath or querySelector?。他们都没有提到具体案件。这是我可以开始的事情。
正如xPath vs DOM API, which one has a better performance中的答案所说,平均程序员在以DOM方式实现复杂任务(例如涉及多个轴)时可能会搞砸,同时保证优化XPath。因此,我的问题只关心可以通过两种方式完成的简单选择。
感谢您的任何评论。
答案 0 :(得分:25)
XPath和DOM都是规范,而不是实现。您无法询问有关规范性能的问题,只能询问有关具体实现的问题。快速XPath引擎和慢速引擎之间至少存在十分之一的差异:它们可能针对不同的事物进行了优化,例如:一些人花费大量时间优化查询,假设它将被执行多次,这对于单次执行可能是错误的。可以说,XPath的性能更多地取决于您使用的引擎,DOM的性能更多地取决于应用程序员的能力,因为它是一个较低级别的接口。当然,所有程序员都认为自己比平均水平要好得多......
答案 1 :(得分:4)
此页面有一个部分,您可以在其中运行测试以比较两者并在不同的浏览器中查看结果。例如,对于Chrome,xpath比getElementById慢100%。
有关详细信息,请参阅getElementById vs QuerySelector。
答案 2 :(得分:0)
我同意Michael的观点,这可能取决于实现,但我通常会说DOM更快。原因是因为我没有办法看到你可以优化解析的文档以使XPath更快。
如果您正在遍历HTML而不是XML,则专用解析器能够索引文档中的所有ID和类。这将使getElementById和getElementsByClass更快。
使用XPath,只有一种方法可以通过自上而下或自下而上的遍历来查找该id的元素。您可能能够记住重复的查询(或部分查询),但我没有看到任何其他可以完成的优化。