Найти в Дзене
Unity и геймдев | aks2dio

Пакет для бенчмарков в Unity

Уровень материала: 📎 #tool Были планы сделать какой-то медиа-контент по этой теме, но так долго жду возможности, что уже, похоже, никогда. Поэтому хотя бы в виде постика зафиксирую этот тул в истории. ——————————— Performance Testing Package — это официальное расширение для Unity Test Framework, которое позволяет удобно и быстро реализовывать бенчмарки для вашего кода. * Бенчмарк — это тест, который измеряет производительность в контролируемых условиях для получения объективных числовых показателей. Подробнее — в оф документации. ——————————— Оно интегрируется в обычный Test Runner: и в EditMode, и в PlayMode. Но в EditMode доступны не все варианты измерений. Например, нет работы с кадрами или профайлером по понятным причинам. Соответственно, это удобно и запускать самостоятельно, и встраивать в CI-пайплайны.
(в последний раз про CI писал в этом посте) Пакет предоставляет наглядные отчёты. И эти отчёты можно выгружать в xml и csv. Пишется это аналогично NUnit-тестами, на родном C#. Толь
Оглавление

Уровень материала: 📎 #tool

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

———————————

Performance Testing Package — это официальное расширение для Unity Test Framework, которое позволяет удобно и быстро реализовывать бенчмарки для вашего кода.

* Бенчмарк — это тест, который измеряет производительность в контролируемых условиях для получения объективных числовых показателей.

Подробнее — в оф документации.

———————————

Как пользоваться

Оно интегрируется в обычный Test Runner: и в EditMode, и в PlayMode. Но в EditMode доступны не все варианты измерений. Например, нет работы с кадрами или профайлером по понятным причинам.

Соответственно, это удобно и запускать самостоятельно, и встраивать в CI-пайплайны.
(
в последний раз про CI писал в этом посте)

Пакет предоставляет наглядные отчёты. И эти отчёты можно выгружать в xml и csv.

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

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

Пользоваться весьма удобно. А т.к. LLM отлично генерируют нужный код, то ещё очень просто и быстро.

Гонять бенчмарки можно не только в редакторе, но и в билде на конечном устройстве через режим Player.

———————————

Для чего использовать

1️⃣ Разовое сравнение разных подходов с точки зрения производительности, если вы не можете определиться или если в команде разгорелся холивар.

2️⃣ Сбор конкретных, фактически числовых показателей работоспособности вашего приложения.

3️⃣ Проверка успешности проведённых оптимизаций.

4️⃣ Проверка предположений об эффективности разрабатываемого алгоритма.

5️⃣ Обнаружение регрессий между версиями/коммитами через сравнение текущих показателей с "эталонными" или предыдущими.

6️⃣ Анализ работоспособности на разных платформах и устройствах с разной конфигурацией и характеристиками.

———————————

Что позволяет отслеживать

1️⃣ Время выполнения методов и участков кода.

2️⃣ Время выполнения кадра и кол-во потраченных кадров.

3️⃣ Аллокации и потребление памяти.

4️⃣ Данные профайлера через Profiler Markers.

5️⃣ Разнообразные другие кастомные метрики.

———————————

Где смотреть результаты

1️⃣ Непосредственно в выводе нужного теста в окне Test Runner, в кратком формате.

2️⃣ В окне Window > Analysis > Performance Test Report в более подробном и наглядном виде.

3️⃣ В сторонних или кастомных инструментах по экспортированным данным (🤖).

———————————

Что можно увидеть

1️⃣ Количество измерений.

2️⃣ Сумму всех значений.

3️⃣ Минимальные и максимальные значения.

4️⃣ Средние и медианные значения.

5️⃣ Отклонения и стандартные отклонения.

———————————

Примерчик

-2