Запилил небольшой профайлер для ECS систем в Bevy Engine

Для чего это нужно? Можно быстро находить медленные системы и другие узкие места. Этот плагин конечно пока не дает такой подробной диагностики как offline профайлеры вроде superluminal или tracy, но зато работает в реальном времени и дает быстрый сигнал, который дальше уже можно изучить в более продвинутом софте. Идея в том чтобы оптимизировать UX именно под структуру внутренностей движка Bevy.

Пример как установить плагин в проект из исходников.

Как это работает? В движок Bevy ставится плагин с агентом. Агент перехватывает события диагностики из tracing-core которыми про-инструментирован движок (span traces из tracing-core) и кладет во временный буфер. Этот буфер потом раздается по HTTP на запущенном на фоне сервере (actix). На другом конце клиент в виде VSCode плагина принимает диагностику, обрабатывает и визуализирует в виде дерева со средним временем выполнения для каждого узла. Пока что узлы это ECS системы, потоки ОС или узлы рендер графа.

Поставить плагин и расширение для VSCode пока можно только из исходников. Как только код будет добавлен в main, я выложу их в маркетплейс и crates.io соответственно.

Ссылка на Pull Request (код пока еще находится в процессе ревью):

Если знакомы с Bevy, Rust или плагинами для VSCode – буду рад обратной связи в PR или здесь.

16
10 комментариев