RU

Бенчмаркая LINQ: подстава с OrderBy — одно условие и полная сортировка

Одни вызовы после OrderBy проходят набор один раз, другие приводят к полной сортировке. По коду разницы не видно. Давайте проверим счётчиком обращен…

LINQOrderByFirstсортировкаBenchmarkDotNetпроизводительность.NET 11компаратороптимизация
Habr
RU

Бенчмаркая пагинацию: Where перед Skip — и метод в 1323 раза медленнее

Один Where в начале запроса — и метод медленнее в тысячу раз. Причём чем дальше страница, тем хуже: на первой разница полтора раза, на тысячной — по…

LINQпагинацияSkipTakeWhereBenchmarkDotNetNET 10производительностьбенчмаркUseSizeOptimizedLinq
Habr
RU

Бенчмаркая Enumerable.Chunk: почему батчей меньше, а проход до ×2,7 дольше

Chunk делит коллекцию на массивы — одна строка кода. Но есть размер чанка, после которого он замедляется в разы при тех же данных и той же памяти. А…

Enumerable.ChunkLINQкуча больших объектовLOHсборщик мусорачанкибатчингBenchmarkDotNet.NET 10аллокации
Habr
RU

Бенчмаркая ZLinq: один IEnumerable в сигнатуре — и .NET 10 быстрее библиотеки в 3,9 раза

ZLinq — замена LINQ без аллокаций. На .NET 8 и .NET 9 время одинаковое. На .NET 10 иначе: массив тот же, но если параметр объявлен как IEnumerable,…

ZLinqLINQIEnumerableаллокациибенчмаркBenchmarkDotNetпроизводительность.NET 10JITдизассемблер
Habr
RU

Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам

Каждый C#‑разработчик писал numbers.Where(x => x > 10).Select(x => x * 2)  — и удивлялся, узнав, что эта строчка ничего не в…

C#LINQyield.NETотложенные вычисленияdeffered executionитераторыIEnumerableленивые вычислениякомпилятор
Habr
RU

redb — типизированное хранилище для .NET поверх Postgres/MSSQL: без миграций, без Include, с полным LINQ

Типизированное хранилище для .NET поверх Postgres и MSSQL. C#-класс как схема — без миграций, без Include, с полным LINQ. Работает в проде. LoadAsyn…

LINQмиграцииEF Coreobject storeredbopen-sourcePostgreSQLMSSQL.NET