- Регистрация
- 03.05.2016
- Сообщения
- 773
- Благодарностей
- 517
- Баллы
- 93
Была задача быстро обработать большую коллекцию HtmlElements. В ходе работы наткнулся на такую ситуацию:
Есть код:
Если его выполнить в кубике C#, то скорость обработки будет быстрая.
Вопрос, почему так происходит и как добиться такой же скорости в VS, а в дальнейшем при работе через dll.
Есть код:
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}");
Если выполнить тот же код в Visual Studio, через IZennoExternalCode, скорость сильно падает.Default: 00:00:05.0966216 | listHe: 772 | Count: 22
Скорость падает в 4 раза, а есть страницы которые обрабатываются через кубик меньше чем за секунду, а через VS 20+ секунд.Default: 00:00:20.0312612 | listHe: 772 | Count: 22
Вопрос, почему так происходит и как добиться такой же скорости в VS, а в дальнейшем при работе через dll.