Ускорение селекторов CsQuery с помощью подстроки html

Я хочу проанализировать некоторые сложные/тяжелые HTML-страницы. Недавно я прочитал о CsQuery и проверил сравнение производительности CsQuery и Html Agility. Упакуйте и выдохните . Согласно этим тестам, CsQuery оказывается медленнее при создании DOM из-за создания индекса.

Допустим, я хочу выбрать определенный элемент (без идентификатора) тяжелой html-страницы, и я знаю идентификатор его предка, который я буду использовать в качестве элемента контекста. Если я загружу этот тяжелый html в DOM, он будет медленным, поэтому мой выбор будет медленным. Однако, если я смогу КАК-ТО БЫСТРО предварительно обработать html и получить подстроку, содержащую элемент контекста (чей идентификатор я знаю), и загрузить его в DOM, это будет быстрее. В этом случае я избавился бы от множества ненужного HTML, для которого не будут создаваться индексаторы. Поэтому мой выбор будет быстрее.

Я использую CsQuery, потому что хочу что-то похожее на JQuery.

Мой вопрос:

Учитывая строку документа HTML: существует ли БЫСТРЫЙ СПОСОБ (например, линейный) для получения подстроки HTML элемента HTML с учетом его идентификатора?


person VMh    schedule 16.03.2013    source источник
comment
Удалось ли вам реализовать мое предложение?   -  person Benjamin Gruenbaum    schedule 22.10.2013


Ответы (1)


Прежде всего позвольте мне сказать, что я думаю, что вы сделали правильный выбор с CsQuery, я перешел с HAP на него некоторое время назад, и я очень доволен этим переключением. Новейший предварительный выпуск CsQuery позволяет полностью отключить индексирование или выполнять только частичное индексирование кода.

Из трекера проблем.

В текущем предварительном коде есть альтернативная стратегия индексирования, которую вы можете использовать, что немного ускоряет построение DOM за счет сложных запросов. (На самом деле есть две новые стратегии, вы можете вообще отключить индекс, если хотите :) Это может быть лучше для тех сценариев, с которыми вы имеете дело.

Если вы хотите загрузить код из репозитория git-hub и скомпилировать его, работая с предварительным -релиз вы сможете сделать именно это.

Класс DomIndexProviders содержит 3 параметра, RangedDomIndexProvider которые индексирует множество селекторов и очень умный SimpleDomIndexProvider, который позволяет базовую индексацию, и NoDomIndexProvider, который вообще не индексирует. SimpleDomIndexProvider очень прост и может работать в вашем случае вы также можете рассмотреть возможность не индексировать.

person Benjamin Gruenbaum    schedule 16.03.2013
comment
Новая версия с этой функцией теперь также доступна в NuGet, если вы включите предварительные версии nuget. org/packages/CsQuery/1.3.5-beta3 - person Jamie Treworgy; 16.03.2013