Про производительность и профайлинг
https://medium.com/huawei-developers/discovering-the-secret-to-fluid-gameplay-an-in-depth-exploration-of-unity-performance-profiler-607dd3d74a1d
Классная статья про профайлинг. Разбор узких мест, связи с лайфсайклом юнити, типа «узких горлышек» и обзор инструментов анализа. Для среднего Unity проекта этого прям даже достаточно, хотя это не все существующие приколы. По крайней мере категории того, как можно убить что CPU, что GPU.
Аж даже флешбеки были о том, про что тут нет. Профайлер классная штука, но он совершенно не умеет работать с огромными массивами данных. Поэтому вообще говоря о профайлинге перфоманса, лучше уметь работать с System.Diagnostics и Stopwatch.
Я когда-то довольно часто под заказ на Unity визуализировал графы. В них были 1000 вершин. С графикой там всё просто. GPU Instancing наше спасение. Да и не все вершины обязательно рисовать. Плюс с физикой для кликов по вершинам я тогда разработал простенькую систему рейкастов, так как Unity была сильно уж прожорливой :) Но в какой-то момент у меня появились фризы. В чём было дело уже не помню, но я разобрался.
Основное что я тогда обнаружил — когда у тебя в память загружен конфиг json на 1000 вершин графа, дип профайл сходит с ума и дико виснет. По нему вообще нереально что-то понять. Поэтому я начал прокладку логов и часиков, чтобы понять «где болит» по логам. Особенно учитывая то, что болел алгоритм укладки графа в пространстве (ведь граф надо не только нарисовать, но ещё и показать красиво в пространстве). А он вообще жил в своём потоке. Помню мне тогда приглянулась идея того, что вершины графа — это магниты, а рёбра — это пружины.
Но кроме таких весьма редких кейсов статья в целом разбирает то, что может пригодится в среднем, если игра тормозит.
#новости
Post #1474
2.03K