misa77, yaz-birçok kez oku (write-once, read-many) senaryoları için özel olarak tasarlanmış yeni bir LZ tabanlı kodlayıcıdır. Bu codec, özellikle tek çekirdekli sistemlerde son derece yüksek açılım hızı, giriş boyutundan bağımsız sabit bellek kullanımı (tüm sıkıştırma modlarında en fazla 5 MB, açılımda ise 0 MB) ve LZ4 ile rekabet edebilecek sıkıştırma oranları sunar. misa77, daha yavaş sıkıştırma hızını bu avantajlar için bir ödünleşim olarak kabul eder.
misa77'nin en dikkat çekici özelliği, yüksek sıkıştırma oranına sahip dosyalarda açılım hızının daha da artmasıdır. Bu, özellikle yüksek oranda sıkıştırılabilir dosyalar için geçerlidir. Orta düzeyde sıkıştırılabilir dosyalarda bile, daha fazla çaba harcayarak daha iyi sıkıştırma oranı elde etmek, açılım hızını da artırır. Bu durum, misa77'de yüksek çaba seviyeli sıkıştırmayı özellikle cazip kılar ve deneysel sıkıştırma modlarının geliştirilmesine ilham vermiştir.
misa77, v0.2.0 sürümünde iki sıkıştırma çaba seviyesi sunar: seviye 0 (daha yüksek açılım hızı, biraz daha düşük oran) ve seviye 1 (varsayılan, biraz daha düşük açılım hızı, daha iyi oran). Her iki seviye de benzer sıkıştırma hızına sahiptir. Kıyaslamalar, misa77'nin çoğu veri türünde açılım hızı ve sıkıştırma oranı arasında Pareto sınırında yer aldığını göstermektedir. Rakip codec'lerden belirgin şekilde daha düşük sıkıştırma oranına sahip olsa bile, misa77 genellikle onlardan daha hızlı açılım yapar.
Intel Core i7-14650HX üzerinde yapılan kıyaslamalarda, Silesia Corpus üzerinde misa77 seviye 0, 5219 MB/s açılım hızına ulaşırken, LZ4 2505 MB/s, LZ4HC 2531 MB/s ve Zstd 901 MB/s hızında kalmıştır. Sıkıştırma oranı ise misa77'de %42.64, LZ4'te %47.59, LZ4HC'de %36.45 ve Zstd'de %34.54 olarak ölçülmüştür. Enwik8 üzerinde de benzer sonuçlar elde edilmiştir: misa77 seviye 0, 4802 MB/s açılım hızı ile LZ4'ün 2355 MB/s, LZ4HC'nin 2167 MB/s ve Zstd'nin 831 MB/s hızını geride bırakmıştır.
misa77, özellikle sıkıştırılabilir dosyalarda LZ4'ten çok daha hızlı açılım yaparken, sıkıştırılamayan dosyalarda (örneğin x-ray) LZ4 ile benzer performans gösterir. Silesia Corpus üzerinde yapılan dosya bazlı analizde, misa77 seviye 0, 12 dosyanın tamamında LZ4'ten daha hızlı açılım yapmıştır. Diğer seviyeler ise 12 dosyadan 11'inde daha hızlıdır; tek istisna, neredeyse hiç sıkıştırılamayan x-ray dosyasıdır (LZ4 bu dosyada yaklaşık 1.0 oranına sahiptir ve aslında bir memcpy'ye dönüşür).
misa77, C++20 derleyicisi (GCC veya Clang) ve CMake >= 3.20 gerektirir. Küçük endian 64-bit sistemlerde çalışır. CLI arayüzü POSIX (Linux, macOS) ortamı gerektirir. x86-64'te AVX2/SSE2 çalışma zamanında seçilir; diğer mimarilerde taşınabilir bir yol kullanılır. Yapılandırma için 'cmake -B build -DCMAKE_BUILD_TYPE=Release' ve 'cmake --build build' komutları yeterlidir. Kütüphane kullanımı için basit bir C++ API sunulur; örnek kullanım misa77.h header'ı ile sağlanır.
Kaynak: github.com