KeiStory

C# MemoryPack

2024. 3. 6. 23:07

C# MemoryPack

 

C# MemoryPack 은 .NET 시리얼라이저로 압축률이 좋고 빠른 성능을 가지고 있습니다.

위 그림을 보면 알수 있듯이 MessagePack 보다도 빠른 성능을 가지고 있습니다.

https://github.com/Cysharp/MemoryPack

 

GitHub - Cysharp/MemoryPack: Zero encoding extreme performance binary serializer for C# and Unity.

Zero encoding extreme performance binary serializer for C# and Unity. - Cysharp/MemoryPack

github.com

 

사용방법은 간단합니다.

 

MemoryPack Nuget Package 를 설치합니다.

시리얼라이즈에 사용할 모델을 정의합니다.

[MemoryPackable] 을 선언하고 partial 로 정의 되어야 합니다.

[MemoryPackable]
public partial class Person
{
    public string? Name { get; set; }
    public int Age { get; set; }
}

사용은 아래와 같이 합니다.

var v = new Person { Age = 40, Name = "John" };

var bin = MemoryPackSerializer.Serialize(v);
var val = MemoryPackSerializer.Deserialize<Person>(bin);

 Serialize 된 bin 데이터를 보면 아래와 같이 되어있습니다.

MemoryPack 은 C# 전용환경인 경우 선택하여 사용하는것이 좋습니다.

아래 내용은 hada.io 에 있는 소개 내용입니다.

MessagePack for C#의 최대 기여자인 Yoshifumi Kawai님이 CTO/CEO로 활동하고 있는 Cysharp의 오픈소스 프로젝트
초고성능을 지향하는 제로 인코딩 디자인 사용
C# 11과 증분 소스 생성기를 이용 동적 코드 생성 없음
최신 I/O API 지원
리플렉션 없는 비제네릭 API
기존 인스턴스로 역직렬화 가능
순환 참조 직렬화
TypeScript 코드 생성 및 ASP.NET Core Formatter 지원
.NET 소스 생성기를 통한 Unity (2021.3) IL2CPP 지원
NativeAOT 대응 완료(.NET NativeAOT의 버그로 인해 .NET 8에서 지원 예정)

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band