Start Debugging

Тег: performance

47 статей · Страница1из5

Как реализовать keyset-пагинацию (cursor pagination) в EF Core 11
Замените Skip/Take на WHERE, который перескакивает за последнюю увиденную строку. Сортируйте по полностью уникальному ключу, переносите значения последней строки как курсор, и EF Core 11 превратит следующую страницу в поиск по индексу вместо сканирования с OFFSET.
Что такое Span<T> в C# и когда он действительно ускоряет ваш код?
Span<T> -- это ref struct, живущий только в стеке и указывающий на память, которой вы уже владеете, поэтому у него нет собственной аллокации. Он ускоряет код ровно в трёх ситуациях: замена буфера в куче на stackalloc, нарезка без копирования и плотные циклы, где JIT убирает проверки границ. В остальных случаях он ничего не меняет, а через await он не компилируется.
2026-06-20 csharpdotnetasync
Что такое ValueTask<T> и когда он того стоит?
ValueTask и ValueTask<T> -- это структуры, которые позволяют асинхронному методу вернуть результат без выделения Task в куче, когда он завершается синхронно. Выигрыш -- одно выделение памяти меньше на горячих путях, которые обычно завершаются без ожидания. Цена -- строгий контракт ожидания ровно один раз. Вот что этот тип представляет собой на самом деле, как он работает и тот узкий набор случаев, где он оправдывает себя.
Что такое Native AOT и чего он вам стоит?
Native AOT компилирует ваше .NET-приложение в единый автономный нативный бинарь без JIT, обеспечивая быстрый запуск и небольшое потребление памяти. Цена этого: цепочка инструментов C на этапе компиляции, более медленные публикации, сборки под каждый RID, отсутствие рефлексии и Reflection.Emit, обязательный тримминг и отсутствие Dynamic PGO. Вот полный баланс.
AsNoTracking vs AsNoTrackingWithIdentityResolution в EF Core 11: что выбрать?
Используйте AsNoTracking по умолчанию для запросов только на чтение. Прибегайте к AsNoTrackingWithIdentityResolution только тогда, когда граф результата содержит одну и ту же сущность несколько раз и ваш код полагается на получение единого общего экземпляра.
HybridCache против IMemoryCache против IDistributedCache в .NET 11: что выбрать?
Для нового кода кеширования в .NET 11 по умолчанию используйте HybridCache. Берите IMemoryCache, только если нужна скорость на одном сервере без сериализации, а IDistributedCache, только как хранилище-бэкенд. Вот матрица принятия решений.
Как использовать HybridCache в ASP.NET Core 11 с Redis в качестве кеша L2
Подключите HybridCache к Redis-кешу L2 в ASP.NET Core 11: зарегистрируйте сервис, добавьте распределённый кеш StackExchange Redis и позвольте GetOrCreateAsync дать вам двухуровневый кеш со встроенной защитой от лавины и инвалидацией по тегам.
EF Core ExecuteUpdate против загрузки сущностей и SaveChanges: что выбрать?
Руководство по выбору и реальный benchmark для EF Core 11: используйте ExecuteUpdate для множественных записей по предикату, а путь загрузить-затем-SaveChanges только тогда, когда нужен отслеживатель изменений, перехватчики или сложный граф объектов.
Вперёд