В данном посте будем учиться запускать «профилирование» в Visual Studio, чтобы глазами увидеть место самых больших нагрузок у бота.
Ну и в целом заканчиваем нашу минисерию постов про производительность роботов и как делать так, чтобы у Вас никакие очереди не забивались, а роботы работали быстро и качественно.
Профилировка производительности C# — это процесс анализа производительности программы путём мониторинга использования процессора различными функциями и сегментами кода.
Профилируя приложение C#, можно определить, какие части кода занимают больше всего времени процессора и вызывают проблемы с производительностью. Эта информация важна для оптимизации приложения и улучшения его общей производительности.
С точки зрения прикладного:
Профилировка производительности – один из способов запуска проектов на СиШарп (OsEngine), который помогает увидеть «узкие» места в коде, где больше всего расходуется ЦП.
Так проект OsEngine можно запустить в нескольких режимах:
Нажимаем на кнопку «Performance Profilier»!
В окне запуски профилировщика есть выбор:
Мы, для примера, запускаем MarketDepthScreener, который мы рассматривали пару статей назад. https://smart-lab.ru/company/os_engine/blog/1058746.php
Далее, подключаем коннектор АЛОР, и подключаем к нему всю площадку СПОТ с MOEX:
И включаем робота:
Пока робот работает и проект не закрыт, Вы видите шкалу загрузки ЦП и то, как профилировщик собирает данные для будущих исследований:
Закрываем OsEngine и ждём, пока профилировщик проанализирует данные.
Отчёт выглядит следующим образом:
Нужно обратить внимание на столбец под номером один. В нем мы видим «Функцию с максимальным личным временем работы».
Тут ничего необычного…
Нажимаем на любую строку, и нас перебрасывает в таблицу:
В таблицу загрузки ЦП:
Здесь можно переключать тип отображения загрузки ЦП, в том числе и определение «Горячего пути», и «Вызывающий — вызываемый». Каждый из этих способов позволяет увидеть нагрузки на проект немного под разным углом.
Анализируя данные из отчётов, можно понять, в каком месте проекта или робота у Вас идут ненужные нагрузки, и убрать их.
Удачных алгоритмов!
Комментарии открыты для друзей!
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
На днях писал видео для товарища из сообщества, о том как это работает:
disk.yandex.ru/i/Byj31Xlcfy49Nw
Видео без обработки и «фейерверков», какое есть. Но примечательное, т.к. не наигранное. И в процессе получилось ускорить робота в сотни раз.
Кому тема важна и нужна — смотреть в обязательном порядке.