Yazılar · 21.03.26 · 1 dk

FrozenDictionary: ne zaman kazandırır?

Read-heavy hot path'te gerçek bench. ConcurrentDictionary hâlâ kazanır mı?

FrozenDictionary: ne zaman kazandırır?

.NET 8'de FrozenDictionary (dondurulmuş sözlük), çoğunlukla okunan ama nadiren yazılan verilerde anlamlı kazanç veriyor; her sözlük değişiminde değil. Sözlük bir kez doldurulup "dondurulunca" arama (lookup) hızlanır ama yeni ekleme pahalılaşır.

Kendi testimde 100 bin anahtar ve %99 okuma ile aramada yaklaşık %15-20 iyileşme gördüm. Sık ekleme/güncelleme varsa ConcurrentDictionary (eşzamanlı erişime uygun sözlük) hâlâ kazanan.

FrozenDictionary vs ConcurrentDictionary Ne zaman kullanıyorum: uygulama başlarken doldurulup dondurulan ayar haritası, kargo firması kodu → isim eşlemesi, enum → metin dönüşümü. Her istekte değişen oturum verisi veya istek bazlı önbellek için uygun değil.

var map = configs.ToFrozenDictionary(c => c.Key, c => c.Value);

En çok çalışan kod yolunda (hot path) profil almak şart. Sunumda "daha hızlı" yazması yetmez; ölçülmüş karar olmalı.

Özet: Sık okunan, nadiren yazılan sabit veriler için FrozenDictionary. Sık yazılan veriler için değil.

FrozenDictionary: ne zaman kazandırır? — Aziz Osmanoğlu