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.
Bu sentez, kaynağından yapay zeka tarafından üretildi; insan editör ya da elle onay adımı yoktur. Nasıl çalışıyoruz