Сериализатор это часть стандартной библиотеки .net.
Атрибуты это как метки, например для ORM, можно полю присвоить иное имя, как оно будет в бд храниться или вообще не будет, могут быть сигналом для компилятора, например можно пометить метод устаревшим, и в зависимости как настроена компиляция, у вас будет предупреждение или ошибка при сборке, некоторые библиотеки могут уже на основе атрибутов делать модификацию скомпилированной сборки, для внедрения кода и т.д. Смотреть надо описание атрибута в документации и как он используется.
Василий Банников, Вообще если интересна тема тестирования производительности, на ютубе много роликов на эту тему, с того же DotNext, там много докладов есть самого Андрея Акиньшина (придумал как раз этот фреймворк), ну и по самому BenchmarkDotNet`у.
Смотреть выделение памяти через диспетчер задач, как бы не верно, для этого есть профилировщики памяти, вам там все покажет, поколения, циклы сборки и тд. Да и для работы с таким буфером огромным стоит работать через тип Span.
Сериализатор это часть стандартной библиотеки .net.
Атрибуты это как метки, например для ORM, можно полю присвоить иное имя, как оно будет в бд храниться или вообще не будет, могут быть сигналом для компилятора, например можно пометить метод устаревшим, и в зависимости как настроена компиляция, у вас будет предупреждение или ошибка при сборке, некоторые библиотеки могут уже на основе атрибутов делать модификацию скомпилированной сборки, для внедрения кода и т.д. Смотреть надо описание атрибута в документации и как он используется.