« Tüm yayınlar

MemoryPack: C# için sıfır kodlamalı, aşırı hızlı ikili serileştirici

MemoryPack, .NET 7/C# 11 tabanlı sıfır kodlamalı ikili serileştirici; benchmarklarda diğer serileştiricilerden 2-200 kat daha hızlı.

MemoryPack, C# ve Unity için tasarlanmış yeni bir ikili serileştirici. .NET 7 / Ryzen 9 5950X üzerinde yapılan ölçümlere göre standart nesnelerde System.Text.Json, protobuf-net, MessagePack for C# ve Orleans.Serialization'a kıyasla 10 kat, diğer ikili serileştiricilere göre 2-5 kat daha hızlı; struct dizilerinde ise fark 50-200 kata kadar çıkıyor. Kütüphane, VarInt kodlama gibi klasik teknikler yerine C# belleğini doğrudan kopyalayan 'sıfır kodlama' yaklaşımını benimsiyor; bu açıdan FlatBuffers'a benzese de özel tip gerektirmeden düz POCO nesneleriyle çalışabiliyor.

ZeroFormatter, Utf8Json ve MessagePack for C#'ın da yaratıcısı olan geliştirici, MemoryPack'i .NET 7/C# 11 Incremental Source Generator üzerine sıfırdan tasarlamış; .NET Standard 2.1 (.NET 5/6) ve Unity 2021.3 IL2CPP desteği de mevcut. Kod üretimi tamamen source generator tabanlı olduğundan Native AOT ile uyumlu, IL.Emit veya reflection'a ihtiyaç duymuyor.

Motor; IBufferWriter<byte>, ReadOnlySpan/ReadOnlySequence gibi modern I/O API'lerini, mevcut örneğe deserializasyonu, polymorphism (union) serileştirmeyi, sürüm toleransını, döngüsel referansları, PipeWriter/Reader tabanlı streaming'i ve TypeScript kod üretimini destekliyor. Yüksek performanslı mikroservisler, oyun ağ katmanları ve büyük veri işleyen .NET uygulamaları için önemli bir alternatif sunuyor.