Ana Sayfa

Black-White Array: Hızlı ve Bellek Dostu Yeni Bir Veri Yapısı

1 dk okuma

Black-White Array (BWArr), dizilere dayalı, hızlı ve sıralı bir veri yapısıdır. Profesör Z. George Mou tarafından geliştirilen bu yapı, dinamik veri kümeleri için optimize edilmiştir ve ilk açık kaynaklı uygulaması bu depoda sunulmaktadır. Temel avantajları arasında ekleme işlemleri için $O(\log N)$ bellek tahsisatı (çöp toplayıcıya daha az yük), hızlı ekleme, silme ve arama operasyonları yer alır. Ortalama $O(\log N)$ zaman karmaşıklığı sunan BWArr, dizi tabanlı ve işaretçisiz yapısıyla CPU dostudur, bu da önbellek yerelliği ve sıralı yineleme gibi avantajlar sağlar. Ayrıca, yinelenen öğeleri doğal olarak destekler ve düşük bellek kullanımıyla öne çıkar. Google BTree gibi mevcut çözümlere doğrudan bir alternatif olarak konumlandırılmıştır.

Ancak BWArr'ın bazı sınırlamaları da bulunmaktadır. Her $N$ ekleme işleminden birinin karmaşıklığı $O(N)$'e düşebilir, bu da milyonlarca öğe içeren koleksiyonlarda gecikme artışlarına yol açabilir; bu durum asenkron eklemelerle hafifletilebilir. Küçük öğe sayıları için arama ve silme işlemleri $O((\log N)^2)$ zaman alabilirken, öğelerin %50'si $O(\log N)$ sürede bulunur. Uzun seriler halinde öğe silindiğinde, Max()/Min() veya yineleme adımları $O(N/4)$ sürebilir, ancak bu işlemlerin ortalama karmaşıklığı yine $O(\log N)$ olarak kalır.

Depo, BWArr'ın Google BTree ile karşılaştırmalı performans testlerini de içermektedir. Bu testler, belirli sayıda benzersiz tamsayı değerinin boş bir veri yapısına eklenmesi, önceden doldurulmuş bir yapıdaki değerlerin anahtarlarına göre aranması ve sıralı/sırasız tüm değerler üzerinde yineleme yapılması gibi senaryoları kapsar. BWArr, özellikle bellek tahsisatı ve genel performans açısından iddialı sonuçlar sunmaktadır. Go 1.22 veya üzeri sürümlerini gerektiren bu yapı, basit bir go get komutuyla kurulabilir ve örnek kodlarla kolayca kullanılabilir.

İçgörü

Bu yeni veri yapısı, özellikle bellek tahsisatını optimize ederek ve CPU önbellek dostu bir yaklaşımla dinamik veri kümeleri için yüksek performanslı ve verimli bir çözüm sunuyor.

Kaynak