Hangi işlevsel sözlük veri yapılarının bilinmesi önemlidir?
Yüksekliği dengelenmiş ikili ağaçlar ve bunların denemeleri çok yönlü bir uzlaşmadır. Ayrıca:
- Patricia ağaçları.
- Hash deniyor.
Bu yaklaşımların artıları ve eksileri nelerdir?
Yüksekliği dengeli ikili ağaçlar ve bunların denemeleri, atomik anahtarlar için çok yönlü bir uzlaşmadır. Denemeler, sıralı anahtarlar için aynıdır, örneğin dize anahtarları.
Patricia ağaçları birkaç kat daha hızlı olabilir, ancak yalnızca tamsayı tuşlarına izin verir.
Karma denemeler dengeli ikili ağaçlardan birkaç kat daha hızlı olabilir, özellikle de karma karşılaştırmadan daha ucuzsa ve polimorfizmin bir yükü varsa (örn. .NET üzerinde dizeler) ve yığına işaretçiler yazmak hızlıdır (örneğin, JVM ve CLR gibi VM'ler işlevsel diller yerine zorunlu diller için optimize edilmiştir). Hash, mutasyonun dahili optimizasyon olarak kullanılmasına da izin verir.
Kırmızı-siyah ağaçlar daha az önemlidir, çünkü yükseklik dengeli ağaçlara göre önemli bir faydaları yoktur, ancak verimli birleşme, kavşak ve farklılığa izin vermedikleri önemli dezavantajlara sahiptirler.
Benzer şekilde, parmak ağaçları pratikte çok daha iyi değildir.
Daha zorunlu bir veri yapısı kullanmak ne zaman mantıklıdır?
Sözlüğünüz bir kez doldurulduktan sonra yalnızca aramalar için kullanıldığında, yani dondurulmuş.
Performansa ihtiyacınız olduğunda (.NET gibi iyi bir karma tablo Dictionary
genellikle herhangi bir genel işlevsel sözlükten 10-40 × daha hızlıdır).
Zayıf bir sözlüğe ihtiyacınız olduğunda, bilinen tamamen işlevsel bir zayıf sözlük yoktur.