Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio.

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio.

В данном посте будем учиться запускать «профилирование» в Visual Studio, чтобы глазами увидеть место самых больших нагрузок у бота.

Ну и в целом заканчиваем нашу минисерию постов про производительность роботов и как делать так, чтобы у Вас никакие очереди не забивались, а роботы работали быстро и качественно.

 

1. Профилировка – это что?

Профилировка производительности C# — это процесс анализа производительности программы путём мониторинга использования процессора различными функциями и сегментами кода.

Профилируя приложение C#, можно определить, какие части кода занимают больше всего времени процессора и вызывают проблемы с производительностью. Эта информация важна для оптимизации приложения и улучшения его общей производительности.

С точки зрения прикладного:

Профилировка производительности – один из способов запуска проектов на СиШарп (OsEngine), который помогает увидеть «узкие» места в коде, где больше всего расходуется ЦП.

Так проект OsEngine можно запустить в нескольких режимах:

1. В режиме Debugging – где можно ставить точки останова и изменять исходный код роботов «на лету».

2. В режиме обычном. Как простое приложение, неподключенное к Visual Studio.

3. В режиме профилирования! Performance Profilier. Вот в этом режиме будем смотреть утечки ЦП. Но чуть позже.

Нажимаем на кнопку «Performance Profilier»!

 

2. Запускаем проект в режиме профилировки.

В окне запуски профилировщика есть выбор:

1. Выбираем «CPU Usage», т.е. по-русски «Использование Центрального Процессора».

2. Жмём на кнопку старт, после чего у нас запуститься проект, как обычно.

 

3. Запускаем робота, который как Вам кажется «жрёт много ЦП», т.е. нагружает процессор.

Мы, для примера, запускаем MarketDepthScreener, который мы рассматривали пару статей назад. https://smart-lab.ru/company/os_engine/blog/1058746.php


Далее, подключаем коннектор Транзак, и подключаем к нему всю площадку СПОТ с MOEX:

И включаем робота:

4. Окно сбора информации во время профилирования.

Пока робот работает и проект не закрыт, Вы видите шкалу загрузки ЦП и то, как профилировщик собирает данные для будущих исследований:

Закрываем OsEngine и ждём, пока профилировщик проанализирует данные.

 

5. Останавливаем сбор информации. Что видим?

Отчёт выглядит следующим образом:

Нужно обратить внимание на столбец под номером один. В нем мы видим «Функцию с максимальным личным временем работы».

Тут ничего необычного…

Нажимаем на любую строку, и нас перебрасывает в таблицу:

В таблицу загрузки ЦП:

1. Вид – функции.

2. Вверху работа коннекторов.

3. То, что вызывается точно из робота, сильно снизу.

Здесь можно переключать тип отображения загрузки ЦП, в том числе и определение «Горячего пути», и «Вызывающий - вызываемый». Каждый из этих способов позволяет увидеть нагрузки на проект немного под разным углом.

Анализируя данные из отчётов, можно понять, в каком месте проекта или робота у Вас идут ненужные нагрузки, и убрать их.

Удачных алгоритмов!

 

P.S.

Os Engine поддержка терминала: https://t.me/osengine_official_support 

Обсуждаем в телеграмме: https://t.me/o_s_a_chat

Канал проекта: https://t.me/bad_quant

20:27
140

Комментарии

Нет комментариев. Ваш будет первым!