Содержание
- 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)


Табличные информационные модели
Нежурналистика. Медиа Школа Экономического факультета
Медиаполигон: Екатеринбург. Написание заметки
Разработка музыкального сайта
Web-программирование. Лекция 2
Условный оператор, оператор выбора. Процедуры вводы-вывода. Логические операции в Паскале, таблицы истинности. Лекция 5
Создание конференции в Skype
Первое знакомство с алгоритмами. Лекция1
Last 1 Year/Charge
Дудлы Гугла
Табличные информационные модели моделирование и формализация
Анализ уровней модели OSI в локальных сетях на примере Ethernet и протоколов TCP/IP
Создание текстовой информации
Департамент образования КОГОБУ СПО Кировский механико-технологический техникум молочной промышленности Классификация ПО
Презентация на тему Алгебра логики вторая часть
Программно-аппаратная защита информации. Лекция 5
Марафон программирования III Осенний Хакатон БГТУ. Разработка игры Крестики-нолики
Создание-редактирование новостройки и типов квартир
World Conflict. Первый проект свободного выбора будущего народом в режиме Role Play
Компьютерная графика
Социальные сети
Фрактальная графика на паскале
Сообщество доноров крови
Раскраска граней многоугольных графов
Текстурный анализ изображений
Коммуникация. Принципы связи
История развития компьютерной техники
Информационные носители