Meshgun

Meshgun 

Рендер-гик, застрявший в Neovim

6subscribers

7posts

Профайлить полезно всегда и со старта ☝️

В пространстве предположений невозможно оценить последствия изменений, поэтому любые действия будут наугад.
Просто собирать таймштампы - это уже огромная разница по сравнению со слепой разработкой. Станет возможным замечать аномалии сразу при появлении, а не когда они накопились и стали вылезать за бюджет кадра.

Существует два фундаментально разных вида профайлеров: сэмплирующие и инструментальные.

Первые собирают сэмплы с заданной частотой (~1000 раз в секунду или больше) с любого желаемого процесса. Интегрируются сбоку и собирают полный стэк вызовов со всех потоков, что позволяет целостно посмотреть на поведение системы.

Мне понравилось пользоваться samply. Посмотреть результат его захвата можно через firefox profiler. Ещё есть cargo-flamegraph: он хорош тем, что захват пишется в обычный svg. Но мне важны данные во времени, а не только график выгорания.
Но для клиентской части игр сэмплирующий профайлер не совсем подходит: 1000 сэмплов в секунду - это всего лишь 8 сэмплов на кадр при 120 fps. Такой точности недостаточно, чтобы оценить работу некоторых функций. Для детальной диагностики нужен второй тип.

Инструментальный профайлер интегрируется напрямую в код и позволяет оценить промежутки с точностью до наносекунд. Его я написал сам, ведь в примитивном виде это буквально 50 строк (+ немного интерфейса). Но даже такого простого инструмента достаточно, чтобы видеть, как себя чувствует игра и на что тратится время.
Subscription levels0
No subscription levels
Go up