Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
17 сентября 2024, 16:08

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10

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

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10 

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

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

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

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

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

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10

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

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

 

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

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10 

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

 

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

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10 

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10 

 

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

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10

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

 

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

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10 

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

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

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10 

  1. Вид – функции.
  2. Вверху работа коннекторов.
  3. То, что вызывается точно из робота, сильно снизу.

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

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

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

Комментарии открыты для друзей!

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10

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

Как узнать, где у робота утекает ЦП? Профилировка ботов в VisualStudio. Быстрый старт в программировании OsEngine #10

1 Комментарий
  • Алексей Ван <o-s-a.net>
    17 сентября 2024, 17:14
    По теме.

    На днях писал видео для товарища из сообщества, о том как это работает:

    disk.yandex.ru/i/Byj31Xlcfy49Nw

    Видео без обработки и «фейерверков», какое есть. Но примечательное, т.к. не наигранное. И в процессе получилось ускорить робота в сотни раз.

    Кому тема важна и нужна — смотреть в обязательном порядке.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн