Judy dizisi - Judy array

Douglas Baskins ve kız kardeşi Judy

İçinde bilgisayar Bilimi, bir Judy dizisi bir veri yapısı bir tür uygulamak ilişkilendirilebilir dizi yüksek performans ve düşük bellek kullanımı ile.[1] Diğerlerinin aksine anahtar-değer mağazaları, Judy dizileri karma kullanmaz, anahtarlarında (tamsayılar veya dizeler olabilir) sıkıştırmadan yararlanır ve seyrek verileri verimli bir şekilde temsil edebilir, yani bellek kullanımını veya işlem süresini büyük ölçüde artırmadan geniş atanmamış indis aralıklarına sahip olabilirler. O (log) sırasına göre performans ölçeklendirmesi ile peta-element aralığındaki boyutlara sahip yapılarda bile verimli kalacak şekilde tasarlanmıştır. n).[2] Kabaca konuşmak gerekirse, Judy dizileri son derece optimize edilmiş 256-ary kök ağaçları.[3]

Judy ağaçları genellikle daha hızlıdır AVL ağaçları, B ağaçları, karma tablolar ve listeleri atla çünkü bunların kullanımını maksimize etmek için son derece optimize edilmişlerdir. CPU önbelleği. Ek olarak, ağaç dengeleme gerektirmezler ve karma algoritma kullanılmaz.[4]

Judy dizisi, Douglas Baskins tarafından icat edildi ve kız kardeşinin adını aldı.[5]

Faydaları

Bellek ayırma

Judy dizileri dinamik ve diziye elemanlar eklendikçe veya diziden çıkarıldıkça büyüyebilir veya küçülebilir. Judy dizileri tarafından kullanılan bellek, Judy dizisindeki elemanların sayısı ile neredeyse orantılıdır.

Hız

Judy dizileri, pahalı olanların sayısını en aza indirecek şekilde tasarlanmıştır. önbellek satırı doldurur Veri deposu ve bu nedenle algoritma, önbelleğin olabildiğince sık ıskalanmasını önlemek için çok karmaşık mantık içerir. Bunlardan dolayı önbellek optimizasyonlar, Judy dizileri, özellikle çok büyük veri kümeleri için hızlıdır. Sıralı veya neredeyse sıralı olan veri setlerinde, Judy dizileri karma tablolardan bile daha iyi performans gösterebilir, çünkü, karma tablolardan farklı olarak, Judy dizilerinin dahili ağaç yapısı anahtarların sırasını korur.[6]

Dezavantajlar

Judy dizileri son derece karmaşıktır. En küçük uygulamalar binlerce kod satırıdır.[5] Ayrıca, Judy dizileri 64 bayt önbellek hatlarına sahip makineler için optimize edilmiştir, bu da onları önemli bir yeniden yazma olmadan esasen taşınabilir hale getirir.[6] Çoğu uygulamada, olası performans avantajı, veri yapısı uygulamasının yüksek karmaşıklığını haklı çıkarmak için çok küçüktür.

Ayrıca bakınız

Referanslar

Dış bağlantılar