Операция выполнена!
Закрыть
Хабы: Блог компании OTUS, C#, Программирование, .NET

Классический ILogger.LogInformation($"User {userId}") выглядит безобидно, но на деле компилятор: формирует итоговую строку через string.Format‑like логику, боксит userId, DateTime, struct‑ы и прочее добро, а так же линкует все в object[] ради структурированных логов.

Аллокационная цена вопроса — порядка 80 Б на сообщение (плюс трансферы в LOH, если вы особо многословны).

В.NET 8 Microsoft даже вынесла отдельный раздел «high‑performance logging» и честно сказала: «Да, обычные extension‑методы логов боксят и аллоцируют»

С выходом C# 10 компилятор научился разбирать $"строка" не напрямую в string, а в handler: структуру, которая получает куски литералов и плейсхолдеры. Базовый — DefaultInterpolatedStringHandler.

Читать далее
Читайте также
СТАТЬ АВТОРОМ
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro