С 5 МБ документа следующий запрос принимает libxml2
3 секунды для оценки. Я могу что-то сделать, чтобы ускорить процесс? Мне нужен результирующий набор узлов для дальнейшей обработки, поэтому нет count
и т. Д.Высокая производительность запроса документа XPath
Спасибо!
descendant::text() | descendant::*
[
self::p or
self::h1 or
self::h2 or
self::h3 or
self::h4 or
self::h5 or
self::h6 or
self::dl or
self::dt or
self::dd or
self::ol or
self::ul or
self::li or
self::dir or
self::address or
self::blockquote or
self::center or
self::del or
self::div or
self::hr or
self::ins or
self::pre
]
Edit:
Использование descendant::node()[self::text() or self::p or ...
как предложено Jens ERAT (см принятый ответ) значительно улучшили скорость; от оригинала 2.865330s, чтобы просто улучшить 0.164336s.
Я хотел бы увидеть некоторые отзывы о вашем бенчмаркинге для различных предложений здесь. –
@JensErat Я измерил это и отредактировал мой вопрос. Большое спасибо за ваш совет. –