KeiStory

C# MemoryPack

2024. 3. 6. 23:07
728x90
반응형

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에서 지원 예정)

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band