В данном посте будем учиться запускать «профилирование» в Visual Studio, чтобы глазами увидеть место самых больших нагрузок у бота.
Ну и в целом заканчиваем нашу минисерию постов про производительность роботов и как делать так, чтобы у Вас никакие очереди не забивались, а роботы работали быстро и качественно.
1. Профилировка – это что?
Профилировка производительности C# — это процесс анализа производительности программы путём мониторинга использования процессора различными функциями и сегментами кода.
Профилируя приложение C#, можно определить, какие части кода занимают больше всего времени процессора и вызывают проблемы с производительностью. Эта информация важна для оптимизации приложения и улучшения его общей производительности.
С точки зрения прикладного:
Профилировка производительности – один из способов запуска проектов на СиШарп (OsEngine), который помогает увидеть «узкие» места в коде, где больше всего расходуется ЦП.
Так проект OsEngine можно запустить в нескольких режимах:
- В режиме Debugging – где можно ставить точки останова и изменять исходный код роботов «на лету».
- В режиме обычном. Как простое приложение, неподключенное к Visual Studio.
- В режиме профилирования! Performance Profilier. Вот в этом режиме будем смотреть утечки ЦП. Но чуть позже.
Нажимаем на кнопку «Performance Profilier»!
2. Запускаем проект в режиме профилировки.
В окне запуски профилировщика есть выбор:
- Выбираем «CPU Usage», т.е. по-русски «Использование Центрального Процессора».
- Жмём на кнопку старт, после чего у нас запуститься проект, как обычно.
3. Запускаем робота, который как Вам кажется «жрёт много ЦП», т.е. нагружает процессор.
Мы, для примера, запускаем MarketDepthScreener, который мы рассматривали пару статей назад. https://smart-lab.ru/company/os_engine/blog/1058746.php
Далее, подключаем коннектор АЛОР, и подключаем к нему всю площадку СПОТ с MOEX:
И включаем робота:
4. Окно сбора информации во время профилирования.
Пока робот работает и проект не закрыт, Вы видите шкалу загрузки ЦП и то, как профилировщик собирает данные для будущих исследований:
Закрываем OsEngine и ждём, пока профилировщик проанализирует данные.
5. Останавливаем сбор информации. Что видим?
Отчёт выглядит следующим образом:
Нужно обратить внимание на столбец под номером один. В нем мы видим «Функцию с максимальным личным временем работы».
Тут ничего необычного…
Нажимаем на любую строку, и нас перебрасывает в таблицу:
В таблицу загрузки ЦП:
- Вид – функции.
- Вверху работа коннекторов.
- То, что вызывается точно из робота, сильно снизу.
Здесь можно переключать тип отображения загрузки ЦП, в том числе и определение «Горячего пути», и «Вызывающий — вызываемый». Каждый из этих способов позволяет увидеть нагрузки на проект немного под разным углом.
Анализируя данные из отчётов, можно понять, в каком месте проекта или робота у Вас идут ненужные нагрузки, и убрать их.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php
Подробнее https://smart-lab.ru/compan...










