tg-me.com/csharpproglib/5987
Last Update:
🧑💻 Когда важна скорость сериализации
MemoryPack — это высокопроизводительный сериализатор. который ориентирован на максимальную скорость и минимальные накладные расходы
Особенности инструмента
— MemoryPack минимизирует накладные расходы, копируя данные напрямую из памяти C#, без дополнительного кодирования.
— Поддерживает современные API: IBufferWriter<byte>
и ReadOnlySequence<byte>
.
— Полностью совместим с Unity, включая поддержку сериализации и десериализации объектов в игровых проектах.
— Поддерживает сериализацию интерфейсов и абстрактных классов с помощью атрибута, а также обеспечивает устойчивость к изменениям версий данных.
Согласно данным из официального репозитория, MemoryPack значительно опережает другие популярные сериализаторы по производительности: он работает до 10 раз быстрее, чем System.Text.Json
и protobuf-net
при сериализации стандартных объектов, при работе с массивами структур до 50–200 раз.
Пример:
[MemoryPackable]
public partial class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public string? Summary { get; set; }
}
// Сериализация
byte[] bytes = MemoryPackSerializer.Serialize(forecast);
// Десериализация
WeatherForecast? result = MemoryPackSerializer.Deserialize<WeatherForecast>(bytes);
Его использование особенно оправдано в игровых проектах, высоконагруженных API и системах, где критична скорость обработки данных.