В данном посте будем учиться запускать «профилирование» в Visual Studio, чтобы глазами увидеть место самых больших нагрузок у бота.
Ну и в целом заканчиваем нашу минисерию постов про производительность роботов и как делать так, чтобы у Вас никакие очереди не забивались, а роботы работали быстро и качественно.
Профилировка производительности C# — это процесс анализа производительности программы путём мониторинга использования процессора различными функциями и сегментами кода.
Профилируя приложение C#, можно определить, какие части кода занимают больше всего времени процессора и вызывают проблемы с производительностью. Эта информация важна для оптимизации приложения и улучшения его общей производительности.
С точки зрения прикладного:
Профилировка производительности – один из способов запуска проектов на СиШарп (OsEngine), который помогает увидеть «узкие» места в коде, где больше всего расходуется ЦП.
Так проект OsEngine можно запустить в нескольких режимах:

1. В режиме Debugging – где можно ставить точки останова и изменять исходный код роботов «на лету».
2. В режиме обычном. Как простое приложение, неподключенное к Visual Studio.
3. В режиме профилирования! Performance Profilier. Вот в этом режиме будем смотреть утечки ЦП. Но чуть позже.
Нажимаем на кнопку «Performance Profilier»!
В окне запуски профилировщика есть выбор:

1. Выбираем «CPU Usage», т.е. по-русски «Использование Центрального Процессора».
2. Жмём на кнопку старт, после чего у нас запуститься проект, как обычно.
Мы, для примера, запускаем 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
Комментарии