RU

Остановили Python, .NET продолжил работать: как изолировать ИИ без лишних микросервисов

Остановил Python сервис с моделью машинного обучения, .NET API продолжил работать и вернул HTTP 503. После восстановления Python запрос снова заверш…

.NET 10PythonFastAPIASP.NET CoreAI OrchestratorSentenceTransformerмикросервисыDocker Composeобработка отказовархитектура ПО
Habr
RU

От Architecture Baseline к рабочему Full Stack MVP: как не усложнить архитектуру раньше времени

Architecture Baseline определяет границы системы и ключевые архитектурные решения. Но настоящая проверка начинается тогда, когда эта архитектура пре…

Enterprise GenAI PlatformархитектураASP.NET Core.NET 10ReactPostgreSQLEF CoreModular MonolithTanStack Query
Habr
RU

А чё, так можно было? Приватное поле за 0,25 наносекунды

Чтение приватного поля через рефлексию занимает 8,96 наносекунды и выделяет 24 байта в куче. Тот же доступ без рефлексии — 0,25 наносекунды и ноль б…

.NETC#UnsafeAccessorрефлексияприватные полябоксингBenchmarkDotNetпроизводительностьоптимизация.NET 10
Habr
RU

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

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

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

Бенчмаркая StringBuilder: подстава на длинном тексте

StringBuilder делит текст на чанки по 8000 символов — вчетверо ниже порога кучи больших объектов. Запас такой, что попасть туда невозможно. Но чанк…

StringBuilderLOHкуча больших объектовчанкисборщик мусораоптимизация памятиаллокацииBenchmarkDotNet.NET 10Clear
Habr
RU

Бенчмаркая ArrayPool: подстава при копировании потоков — 131 072 байта в LOH

ArrayPool используют ради экономии на аллокациях. Но есть размеры, где он делает обратное: массив уходит в LOH, а через new остаётся в нулевом покол…

ArrayPoolLOHкуча больших объектовStream.CopyToFileStreamсборщик мусораоптимизация памяти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

Бенчмаркая System.Text.Json: те же данные, те же настройки, до ×4,3 разницы

В документации к PropertyNameCaseInsensitive есть предупреждение про накладные расходы, но не сказано, когда они появятся. Замерил на четырёх машина…

System.Text.JsonJsonSerializerOptionsPropertyNameCaseInsensitiveдесериализациякешпроизводительностьбенчмаркBenchmarkDotNet.NET 10оптимизация
Habr
RU

Бенчмаркая foreach и энумераторы: аллокации, которые прятались 10 лет

Уважаемые читатели, в этой статье я хочу рассказать о скрытых аллокациях в обычном foreach и представить свои выводы. Тесты сделаны на .net 8, .net…

benchmarkdotnetforeachboxingаллокацииGCJITescape analysis.NET 10производительностьSortedList
Habr