Содержание
- 2. Зачем нужна производительность?
- 3. Как понять, на каком уровне проблема?
- 4. Инструменты dotTrace dotMemory BenchmarkDotNet Visual Studio profiler CodeTrack CLR Profiler
- 5. Инструменты BenchmarkDotNet CodeTrack CLR Profiler
- 6. Инструменты Performance Monitor
- 7. Инструменты ETW Windows Performance Analyzer
- 8. Инструменты MS Message Analyzer
- 9. Lock-free & Wait-free
- 10. Lock-free & Wait-free
- 11. Lock-free & Wait-free double CompareExchange (ref double location1, double value, double comparand); Compare and Swap Interlocked
- 12. ConcurrentDictionary
- 13. ConcurrentDictionary Сильная деградация при попытке получить все блокировки
- 14. SIMD Single instruction, Multiple data float[] values = GetValues(); float increment = GetIncrement(); for (int i
- 15. SIMD Single instruction, Multiple data
- 16. Task.Yield async Task LongRunningCpuBoundWorkAsync() { for (int i = 0; i != 1000000; ++i) { ...
- 17. Task.Yield async Task LongRunningCpuBoundWorkAsync() { for (int i = 0; i != 1000000; ++i) { ...
- 18. Long switch-case switch (packetID) { case BncsPacketId.Null: break; case BncsPacketId.EnterChat: string ecUniqueName = pck.ReadNTString(); string ecStatstring
- 19. Long switch-case Dictionary > switch (packetID) { case BncsPacketId.Null: break; case BncsPacketId.EnterChat: string ecUniqueName = pck.ReadNTString();
- 20. GC Клиентский режим Серверный режим
- 21. ConcurrentBag Оптимизация потребления памяти
- 22. async/await
- 23. async/await
- 24. async/await
- 25. async/await Task.FromResult(0) Task.CompletedResult .Net 4.6
- 26. Аллокация на стеке .net core 2.1 Span C# 7.2 int* block = stackalloc int[100]; Span span
- 27. JIT оптимизация [AggressiveInlining] спасет всех Generic типы инлайнятся Типичные заблуждения: Компилятор умный internal static class FreeObjectUtils
- 28. JIT оптимизация [AggressiveInlining] спасет всех Generic типы инлайнятся Типичные заблуждения: Компилятор умный internal static class FreeObjectUtils
- 29. JIT оптимизация [AggressiveInlining] спасет всех Generic типы инлайнятся Типичные заблуждения: Компилятор умный internal static class FreeObjectUtils
- 30. JIT оптимизация public Dictionary(IEqualityComparer comparer); public struct LongEqualityComparer : IEqualityComparer { public static readonly IEqualityComparer BoxedInstanceInt64
- 31. JIT оптимизация [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Clear() { if (typeof(T) == typeof(int) || typeof(T) == typeof(uint) ||
- 32. MemoryStream
- 33. MemoryStream
- 34. MemoryStream То же самое для: List Collection Dictionary и прочих коллекций
- 35. struct[] -> IList int[] a = new int[10]; DoSomething(a); public void DoSomething (IList list) { }
- 36. LINQ // [18 7 - 18 80] IL_000e: ldarg.0 // this IL_000f: call instance class [mscorlib]System.Collections.Generic.IEnumerable`1
- 37. LINQ public IEnumerable FindChildren(Guid parentId) { return this.AllParts.Where(part => part.ParentGuid == parentId).ToList(); } public IEnumerable FindChildren(Guid
- 38. LINQ public IEnumerable FindChildren(Guid parentId) { return this.AllParts.Where(part => part.ParentGuid == parentId).ToList(); } public IEnumerable FindChildren(Guid
- 39. Строки Вместо конкатенаций используй StringBuilder Вместо string.Format используй конкатенацию string first = "first"; string second =
- 40. Boxing public void Info(params object[] args) log.Info(1, 2, 3, 4, 5); Как надо? public static void
- 41. Heap Allocation Viewer
- 42. Почитать? Federico Lois Sasha Goldstein Андрей Акиньшин
- 44. Скачать презентацию












![SIMD Single instruction, Multiple data float[] values = GetValues(); float increment =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/949408/slide-13.jpg)












![JIT оптимизация [AggressiveInlining] спасет всех Generic типы инлайнятся Типичные заблуждения: Компилятор умный](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/949408/slide-26.jpg)
![JIT оптимизация [AggressiveInlining] спасет всех Generic типы инлайнятся Типичные заблуждения: Компилятор умный](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/949408/slide-27.jpg)
![JIT оптимизация [AggressiveInlining] спасет всех Generic типы инлайнятся Типичные заблуждения: Компилятор умный](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/949408/slide-28.jpg)

![JIT оптимизация [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Clear() { if (typeof(T) == typeof(int) ||](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/949408/slide-30.jpg)



![struct[] -> IList int[] a = new int[10]; DoSomething(a); public void DoSomething (IList list) { }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/949408/slide-34.jpg)
![LINQ // [18 7 - 18 80] IL_000e: ldarg.0 // this IL_000f:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/949408/slide-35.jpg)



![Boxing public void Info(params object[] args) log.Info(1, 2, 3, 4, 5); Как](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/949408/slide-39.jpg)


Симулятор установки windows 5
INEX. Главное меню
Компьютерные сети. Функции канального уровня. (Тема 5)
Создание IPTV плейлиста в формате m3u. Структура, директивы, параметры
Понятие информациорнных технологий
Minecraft
Воспользуйтесь сервисом, чтобы узнать ставки имущественных налогов
Семинар-тренинг 5-8 октября 2014 года. Реестр документов. Документы Интеркампани
Старт партнерки
Уровни тестирования (2)
Додавання відеокліпів, звукових ефектів і мовного супроводу до слайдової презентації
Вычисления в электронных таблицах
Cвязь ФПС, ПФ, ДУ
Что такое BigData
Правовое обеспечение информационной безопасности. Лекция №6. Правовое обеспечение информационной безопасности
Как устроен компьютер
Локальные сети
Родовое дерево (Беляковы)
Как создать Wiki меню ВКонтакте
Информационные технологии в профессиональной деятельности
Популяризация Константина Высоцкого в Тюмени, посредством создания паблика в социальной сети ВКонтакте
Работа в https://learningapps.org
Направления развития и итоги работы. Руководитель отдела системного администрирования МРЦ Волга-2
Локальні мережі
Технология решения задания С1
Telegram-канал Табуретка
Автоматизированное рабочее место (АРМ) специалиста
Славянский колорит в играх