Скорее всего виноват не код, а аллокации.
Каждый раз, когда вы пишете
Substring(), Split() или ToArray(), то вы создаёте новые объекты на хипе. При большой нагрузке это тысячи объектов в секунду.А дальше приходит Garbage Collector и делает паузу. Вот откуда те самые загадочные всплески задержек.
Что делать:
→ Используйте
Span<T> и ReadOnlySpan<T> вместо substring→
ArrayPool<T>.Shared.Rent() вместо new массивов→
StringBuilder пулить через ObjectPool→ Профилируйте через
dotnet-trace + BenchmarkDotNetПравило простое: меньше объектов на хипе → реже GC → стабильная латентность. Иногда пара изменений убирает 80% тормозов.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_view
