Найти в Дзене

LINQ без аллокаций

LINQ без аллокаций

https://dtf.ru/gamedev/3671537-optimizatsiya-linq-v-dotnet-s-pomoshchyu-zlinq-bez-allokatsii-pamyati?from=rss

Охота на ведьм продолжается. На самом деле забавно, что это у меня вызвало ностальгию. Когда-то давным давно меня не взяли в гейминсайт (и как показала история жалеть не о чем). А не взяли меня, так как лид на собесе меня замучал какими-то узкими кейсами по памяти. Типа вопроса "чем отличается string.Concat от "+"" в строках. И убеждал что там много лишних аллокаций. На самом деле очень сильно зависит от контекста и платформ. В общем случае шарповый сахар оптимизирует себя лучше, чем вы напишете.

Я в те времена имел слабое представление о том что такое куча, а что такое стек. Но уже работал больше года разрабом и программировал сутками. В те времена я даже на выходных на работу ездил чтобы делать свой пет проект, так как денег на VR шлем и хороший комп у меня не было. Откуда они у парня с Волгограда только закончившего универ. Поэтому в офисе я был 7 дней в неделю и с практикой всё было неплохо. Но теорию я знал весьма посредственно. Собственно благодаря тому собесу я разобрался в теме. Причём объяснить работу сборщика мусора и памяти без тонких нюансов я смогу кому угодно часа за 4. Зачем так мучать этим на собесах для меня всегда была загадкой. Я тоже конечно по приколу кошмарил людей вопросами про вертексные параметры, про то за что в Unity отвечает UV3 в стандарт шейдере и так далее. Но эти вопросы никогда ничего не решали. Чисто любопытство на сколько человек углублялся. Ладно, Остапа понесло - не суть.

Так вот, к чему я это. Битва с мелкими аллокациями вещь конечно достойная была, до Unity 5.6 если не ошибусь. А после этого в Unity появилась малая куча и тащить подобные либы стало относительно бессмысленно. Могу быть не прав. Но я с фризами из-за кучи аллокаций с объектами меньше 65к байт не сталкивался оооочень давно.

Это очень узкий кейс когда может пригодится NonAlloc LINQ. Да, в Unity мы обделены всеми прелястями .Net (а он оптимизирует себя просто космически, в особенности весь сахар). Но на интеграцию подобной либы, которую ещё нужно дебажить, поддерживать и у неё будет неочевидное поведение - я бы время не тратил.

#новости