Вопрос по скорости обработки HtmlElement

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Была задача быстро обработать большую коллекцию HtmlElements. В ходе работы наткнулся на такую ситуацию:

Есть код:

C#:
var tab = instance.ActiveTab;
tab.Navigate("https://ria.ru/");

var stopwatch = new System.Diagnostics.Stopwatch();

stopwatch.Start();
var listHe = tab.FindElementsByXPath("//div[text()]").ToList();

var def = listHe
    .Where(text => text.InnerText.Length > 50)
    .Where(text => text.InnerText.Split('\n').Length < 2)
    .ToList();
stopwatch.Stop();
var defTime = stopwatch.Elapsed;

project.SendInfoToLog($"Default: {defTime}    |    listHe: {listHe.Count}    |    Count: {def.Count}");
Если его выполнить в кубике C#, то скорость обработки будет быстрая.
Default: 00:00:05.0966216 | listHe: 772 | Count: 22
Если выполнить тот же код в Visual Studio, через IZennoExternalCode, скорость сильно падает.
Default: 00:00:20.0312612 | listHe: 772 | Count: 22
Скорость падает в 4 раза, а есть страницы которые обрабатываются через кубик меньше чем за секунду, а через VS 20+ секунд.

Вопрос, почему так происходит и как добиться такой же скорости в VS, а в дальнейшем при работе через dll.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 529
Благодарностей
3 375
Баллы
113
Если выполнить тот же код в Visual Studio, через IZennoExternalCode, скорость сильно падает.


Скорость падает в 4 раза, а есть страницы которые обрабатываются через кубик меньше чем за секунду, а через VS 20+ секунд.

Вопрос, почему так происходит и как добиться такой же скорости в VS, а в дальнейшем при работе через dll.
Из-за скорости взаимодействия программ, аналогично будет при отладке в PM (механизмы общие).
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Из-за скорости взаимодействия программ, аналогично будет при отладке в PM (механизмы общие).
В данном примере скорость обработки была из PM

Еще при работе кода через PLINQ AsParallel в VS скорость незначительно увеличивалась, а вот в PM, скорость падала до такой же скорости как в VS.
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
В данном примере скорость обработки была из PM

Еще при работе кода через PLINQ AsParallel в VS скорость незначительно увеличивалась, а вот в PM, скорость падала до такой же скорости как в VS.
скорее всего что браузер зенки не поддерживает параллельные запросы к себе.. а так как время опроса одного элемента в браузере очень велико и они все выстраиваются в очередь, то вот они и тормоза. но я не проверял теорию про параллельный доступ к браузеру :bk:

еще есть такой момент интересный, запуская твой скрипт, можно в ПМ получить как 0.3 секунды так и 19 секунд на разных запусках. думаю это связано с тем что у тебя нет кода ожидания когда страница загрузится.

105874
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
еще есть такой момент интересный, запуская твой скрипт, можно в ПМ получить как 0.3 секунды так и 19 секунд на разных запусках. думаю это связано с тем что у тебя нет кода ожидания когда страница загрузится.
В топике я указал переход на страницу в одном коде с фильтрацией. А лучше его сделать отдельным кубиком, тогда обработка коллекции вообще меньше секунды становится.
Добиться бы такой скорости через свою библиотечку)
105876
 

Кто просматривает тему: (Всего: 4, Пользователи: 0, Гости: 4)