TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 310 subscribers
Post #20 71
Экономия до 40% на сериализации. Не кликбейт

Когда в .net 5 вышли Source Generators я честно был восхищен, но был нюанс 🙂 Типа, круто, что мы теперь в компилятор что-то подпихнуть можем, но нахера?))) Так вот, .net 6 так сказать прояснил ситуацию для тупых, добавив фичу JsonSerializerContext.

Поговаривают, с ее использованием можно поднять производительность json-сериализации до 40%. Сильно ли нужно заморочиться, чтобы вкрутить у себя? Я и сам в шоке, но оказывается – нет!

Есть у вас класс Person, который вы хотите передать по Интернетам:

public class Person
{
public string FirstName { get; set; } = default!;
public string SecondName { get; set; } = default! ;
}

И раньше вы делали так:

var person = new Person
{
FirstName = "Mr",
SecondName = "Anderson"
};

var personText = JsonSerializer.Serialize(person);

А потом передавали уже в виде байтиков сериализованную персону.

Что нужно сделать, чтобы ускорить эту строку на 40%? Создать вот такой partial класс:

[JsonSerializable(typeof(Person))]
public partial class PersonJsonContext: JsonSerializerContext
{
}

И в строчке прописать один параметр PersonJsonContext.Default.Person:

var personText = JsonSerializer.Serialize(person, PersonJsonContext.Default.Person);

Один параметр, Карл! Ради сорока процентов производительности! Мне кажется, что это стоит того напряжения, учитывая, сколько сериализаций содержит твое web-приложение!
More from @dimasshortposts
  1. Oct 2, 2026s
  2. Oct 2, 2026Post #503
  3. Sep 30, 2026🛤 Путь до Tier1: от чего он зависит В прошлый раз мы гоняли hello world в цикле и увидели…
  4. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  5. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  6. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →