Я согласен с Майклом, что это может зависеть от реализации, но я бы сказал, что DOM быстрее.Причина в том, что я не вижу способа оптимизировать анализируемый документ, чтобы ускорить XPath.
Если вы пересекаете HTML, а не XML, специализированный анализатор может индексировать все идентификаторы и классы вдокумент.Это сделает getElementById и getElementsByClass намного быстрее.
В XPath есть только один способ найти элемент этого идентификатора ... путем обхода сверху вниз или снизу вверх.Возможно, вы сможете запоминать повторяющиеся запросы (или частичные запросы), но я не вижу никакой другой оптимизации, которая могла бы быть сделана.