Code Optimization ⚡️ Трюки Оптимизации Кода в С# и Unity
Подробно рассмотрим варианты оптимизации в C# и Юнити. Разбераем optimization code tricks применяемые в индустрии GameDave в градациях Easy, Normal, Hard. Подробно касаемся тем: кодогенерация, использование frame budget, написание перфомнас тестов, тулинг, быстрая рефлексия. Открываем оптимизацию кода с изнанки на максимум!
Среди прочего:
- Так ли хорош StringBuilder?
- Сколько нужно LINQ-запросов, чтобы просел FPS?
- Как писать быструю рефлексию?
- Code optimization & frame budget
- И что же там такое интересное вышло в .NET 5?
в гостях у АВТОРОВ курса ’АРХИТЕКТУРА МОБИЛЬНЫХ ИГР НА UNITY ДЛЯ ПРОФЕССИОНАЛОВ’
СПИКЕР: ДЖОШУА ЛАЙТ, Lead .NET Developer, Plarium
Наш портал:
По всем вопросам:
==============================================
0:00 Начало
2:43 Приветствие
4:30 Тема трансляции «Optimization Tricks & Tips”
4:45 Знакомство с гостем
5:25 Оптимизация и что про неё нужно знать
6:25 Setup измерение кода
8:53 Tricks советы/лайфхаки
10:10 Easy приемы
11:55 Foreach List vs Array
13:00 Foreach List vs IEnumerable
18:25 Ответ на вопрос: Как бенчмарки получаю времена типа нс
19:10 Ответ на вопрос: Было про сложение vs умножение. А можно умножение vs деление? Там есть операции которые взаимозаменяемы. Например, половину от а можно представить как a/2, а можно как а * 0,5.
20:39 Ответ на вопрос: Актуальны ли будут tricks для тех же мобилок
21:38 Foreach refs vs structs
22:25 Foreach vs LINQ
23:16 StringBuilder vs Concat
24:48 Ответ на вопрос: А если в цикле конкатенировать ?
26:33 Ответ на вопрос: А интерполированная строка против конконтенации будет ?
27:47 Ответ на вопрос: В каких случаях вынесение кусков кода Юнити-проекта в плагины на C имеет смысл?
30:38
31:35 Contains vs IEquatable
35:06 Params
36:25 Recursion
39:10 Ответ на вопрос: плюс в for будет срабатывать предикция на цпу?
40:05 (StartsWith) vs indexer
42:47 Struct size matters
45:09
45:35 Normal приемы
45:45 Static instance cache
49:30 Dictionary vs Array cache
51:00 Inlining
52:54 Ответ на вопрос: Интайр к свойствам сработает ?
53:22 ArraySegment
54:51 Ответ на вопрос: А можно пример где Inlining не полезен ?
57:05 Span
59:14 ArrayPool
01:00:50 Stackalloc
01:02:13 Finalizers
01:03:30 In defensive copy
01:05:44 Digits count (Log)
01:07:50 перерыв
01:14:10 Hard
01:14:51 Digits count (Log)
01:16:38 Pointers (copy)
01:21:51
01:25:20 Ответ на вопрос: Про быстрое вычисление обратного корня из Quake можно еще)
01:27:00 Ответ на вопрос: Только в юньке нет компановки, там boehm (mark&sweep)
01:31:21 Ответ на вопрос: А как самому освободить этот указатель, как в Си, например ?
01:34:37 Ответ на вопрос: Как посоветуете использовать нугет в рамках Юнити?
01:36:30
01:40:27 Emit
01:42:53 Ответ на вопрос: В il2cpp это будет работать? в unity на мобилках?
01:44:17 Tricks
01:45:51 Tips
01:46:33 Tools
01:49:53 Ответ на вопрос: Есть какой-то пак рослин-анализаторов, чтобы тупых оптимизационных ошибок не лепить?
01:51:19 Performance testing
01:52:47 Code-gen
01:53:43 Roslyn
01:54:54 Source generators
01:56:30 Frame budget
01:58:32 Conclusion
02:00:51 Завершение стрима
==============================================
Запись наших вебинаров:
Запись наших стримов:
(18 )
#Unity #C# #gamedev #Юнити #Optimization Code #unitytutorial
1 view
27
7
4 weeks ago 02:49:56 1
Music for Work — Deep Future Garage Mix for Concentration