No video

Станислав Сидристый - Делаем zero-allocation код на примере оптимизации крупной библиотеки

  Рет қаралды 5,922

DotNext — конференция для .NET‑разработчиков

DotNext — конференция для .NET‑разработчиков

Күн бұрын

Ближайшая конференция - DotNext 2024, 10 - 11 сентября, Москва + online
Подробности и билеты: jrg.su/x2GKnA
- -
Иногда возникают ситуации, когда код написан хорошо и стабильно. И кода этого очень много: переписывать будет крайне тяжело. Еще в этом коде есть проблема: он выделяет очень много памяти. Память выделяется и освобождается ввиду возросшей нагрузки и как результат - GC молотит на полную катушку.
На примере библиотеки SMBLibrary мы попробуем свести выделения памяти к минимуму, используя ряд выработанных техник, и увидим, насколько тяжелыми могут быть самые простейшие операции.

Пікірлер: 19
@alexanderlogunov5147
@alexanderlogunov5147 3 жыл бұрын
А чё? Так можно было что ли? Я в восторге! Это очень круто!
@ivan.p
@ivan.p 3 жыл бұрын
Спасибо, очень интересно
@denisstepanenko3037
@denisstepanenko3037 3 жыл бұрын
Идея пулинга и мемори спанов не нова, но как всегда актуальна
@alfa9938
@alfa9938 3 жыл бұрын
Да в том-то и вопрос, что всё новое - хорошо забытое старое... :) Другое дело, что такой код поддерживать чуть сложнее, чем тот, к которому все привыкли, но профит даёт приличный. А потому почему бы и нет? :)
@dotnetforever
@dotnetforever 3 жыл бұрын
Старое или нет, я до сих пор не могу убедить людей это применять. Больше 100ГБ мемори трафика на десктопной апе за 15 минут работы и все вокруг пожимают плечами и спрашивают "А это вообще плохо?". У нас ОЧЕНЬ похожая проблема как Станислав описывает. P.S. Спасибо огромное за книжку! Периодически ссылаюсь на неё.
@MrMonkAlex
@MrMonkAlex 3 жыл бұрын
Кроме пулинга так ничего и не услышал. Часовой доклад, без каких-либо особенностей реализации - скучно.
@RajaKajiev
@RajaKajiev 3 жыл бұрын
а в чём получился выигрыш относительно LinqFaster ?
@alfa9938
@alfa9938 3 жыл бұрын
Этот вариант вообще не организует трафик по памяти. Все последующие вызовы LINQ используют память предыдущих
@10199able
@10199able 3 жыл бұрын
переписываете переписываете переписываете переписываете переписываете переписываете
@MrAlexanderKot
@MrAlexanderKot 2 жыл бұрын
Вот вот да вот вот... В принципе интересно, но слушать кошмар. К алокейшен- фри алгоритмам ещё бы и вот-фри изложение. Как можно делать столько докладов на конференциях и не научиться избегать слов паразитов, вот?
@MrCraick0
@MrCraick0 3 жыл бұрын
бумер изобрел оперативную память Я серьёзно не понимаю зачем? почему это нельзя было написать на си или крестах?
@superspy2008
@superspy2008 3 жыл бұрын
почему вообще нельзя на асме писать сразу код, к чему все эти лишние слои с синтетическим синтаксисом и компиляцией
@BloobUbloobok
@BloobUbloobok 3 жыл бұрын
Уф, звучит как будто вы вкладываете какую то особую коннотацию в слово "бумер" :) Попробую ответить - это ХОЧЕТСЯ написать НЕ на Си или С++, потому что это страдания, это языки особого назначения на которых потом не получится написать ничего иного. C# и .NET лично для меня прекрасны именно потому, что в 80% случаев ты можешь писать работающий и легкочитаемый код, со всем арсеналом управления сложностью домена. Но при необходимости, в тех самых 20% случаев можно превратить ООП код в нечто максимально оптимизированное и работающее максимально быстро. И оно будет на том же языке, разве что с некоторыми изысками.
@MrCraick0
@MrCraick0 3 жыл бұрын
@@BloobUbloobok про бумера это отсылка к шутке "бумер изобрёл коммунизм" Вы пишете про плюсы c# в вакууме. Вопрос зачем решать эту задачу посредством шарпа. То что в докладе пытаются использовать есть в том же си из под коробки. Одна из фраз "если не очищать переменную перед тем как вернуть в пулл, получим мусор", вот ловлю я вьтнамские флешбеки) Это интересно выглядит, но все равно это выглядит как велосипед на костыльной тяге.
@BloobUbloobok
@BloobUbloobok 3 жыл бұрын
@@MrCraick0 собственно ответ будет примерно тот же - зато в 80% остальных случаев можно быстро писать на удобном языке C# не задумываясь о таких оптимизациях, не задумываясь об очистке мусора, концентрируясь только на бизнес-логике и решении задачи. А вот уж когда надо сделать максимально быстро, садишься и пишешь специальный точный код, но используя ровно тот же самый понятный язык программирования.
@leobreydo9318
@leobreydo9318 3 жыл бұрын
@@BloobUbloobok Друг мой, это не с++ плохой или неудобный - это вы его плохо знаете 😕
Кирилл Маурин - Классы типов на C#
1:11:32
DotNext — конференция для .NET‑разработчиков
Рет қаралды 4 М.
Андрей Дятлов - Source Generators в действии
1:12:29
DotNext — конференция для .NET‑разработчиков
Рет қаралды 4,3 М.
Before VS during the CONCERT 🔥 "Aliby" | Andra Gogan
00:13
Andra Gogan
Рет қаралды 10 МЛН
Writing C# without allocating ANY memory
19:36
Nick Chapsas
Рет қаралды 147 М.
Что такое WebSockets (веб-сокеты)
2:59
Хочу вАйти
Рет қаралды 8 М.
Владимир Хориков - Domain-driven design: Cамое важное
1:13:59
DotNext — конференция для .NET‑разработчиков
Рет қаралды 52 М.
КАК УСТРОЕН TCP/IP?
31:32
Alek OS
Рет қаралды 54 М.
Дмитрий Иванов - Многопоточные структуры данных в .NET: как это работает?
59:44
DotNext — конференция для .NET‑разработчиков
Рет қаралды 15 М.
Сергей Тепляков - Диагностика асинхронного C# кода
1:04:14
DotNext — конференция для .NET‑разработчиков
Рет қаралды 6 М.
Марк Шевченко - Откуда что взялось в C#
1:00:13
DotNext — конференция для .NET‑разработчиков
Рет қаралды 8 М.
Иван Дашкевич - Yield и async-await: как оно все устроено внутри и как этим воспользоваться
50:35
DotNext — конференция для .NET‑разработчиков
Рет қаралды 24 М.
Максим Аршинов - Деревья выражений в enterprise-разработке
46:54
DotNext — конференция для .NET‑разработчиков
Рет қаралды 12 М.