TGViewer
Кодерские работы 👾 Кодерские работы 👾 @coderw0rker · 104 subscribers
Post #174 165
💾 Оптимизация использования памяти


🚀 Так как в вебсокетах я гоню сырые байты, пришлось заняться лишними аллокациями.

🧐 В итоге углубился в Span, ArrayPool и stackalloc.

📊 Результаты BenchmarkDotNet:
📉 Стандартно: ~200 KB/операция (до 40 ГБ суммарно) + GC (вплоть до Gen2).
✅ Оптимизировано: 0 аллокаций.
⚡️ Скорость: рост в 13–18 раз.

📌 Подходы, которые я попробовал:
1️⃣ Allocating Method (Standard)
🛠 Использование Split() и т.д. создает избыточные массивы и строки. На больших объемах это кучи мусора, вызывающие тормоза, т.к. идет нагрузка на GC.

2️⃣ Оптимизированный подход
🔹 ReadOnlySpan
👁 Работаешь как с «окном» в исходный массив buffer.
🚫 Ничего не копируешь просто двигаешься по уже существующим данным.

🔹 ArrayPool
🔄 Позволяет брать массивы из пула и потом возвращать обратно. Тут важно не забывать Return, иначе можно словить неприятные баги.

🔹 stackalloc позволяет выделять память прямо на стеке:
- очищается после выхода из метода
- подходит только для небольших данных
  • 🔥 7
More from @coderw0rker
  1. Oct 1, 2026👨‍💻 Вышло завести OLED экранчик, запустил на нём Game of Life, хех.
  2. Sep 28, 2026🥰 Мои малютки пришли, приятно удивила упаковка, думал будет пластиковый пакет, а тут конт…
  3. Sep 27, 2026✍️ А вот и сам код)
  4. Sep 27, 2026⚙️ Реализация Refresh Token 📦 Для хранения сессии я использую класс UserSession (1). В нё…
  5. Sep 26, 2026🔐 Refresh Token Rotation 👨‍💻 Расскажу вам немного про механизм ротации токенов. В моём…
  6. Sep 24, 2026👋 Есть кто живой? 😅 Как-то незаметно пролетел почти весь сентябрь, а последний пост был…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →