2016-03-26 27 views
0

Sürümleri ve şubeleri zaman içinde geliştirebilen bir varlık (bir dosya veya kitaplık/paket) verildiğinde, sürümlerde gezinmeme olanak tanıyan optimize edilmiş bir veri yapısı arayan varlığın belirli bir örneğine. gibiS: Dallanmış ve Sürümlü öğeler için optimize edilmiş veri yapısı

Örneğin

(biraz yapmacık örnek) verilen girişleri:

MySIMDIntristicsLib.v1~archMIPS.v1~fbsd.v1 
MySIMDIntristicsLib.v1~archMIPS.v2~fbsd.v1 
MySIMDIntristicsLib.v1~archX86.v1~win.v1 
MySIMDIntristicsLib.v1~archX86.v2~win.v1 
MySIMDIntristicsLib.v1~archX86.v2~win.v2 
MySIMDIntristicsLib.v2~archX86.v1~win.v1 


// get latest across all branches 
get(Entity="MySIMDIntristicsLib", branch[(latest) "~"]) 
returns: "MySIMDIntristicsLib.v2~archX86.v1~win.v1" 


// get latest across archMips/fbsd branch 
get(Entity="MySIMDIntristicsLib", branch[(latest) "archMIPS~fbsd"]) 
returns: "MySIMDIntristicsLib.v1~archMIPS.v2~fbsd.v1" 



// get earliest for archX86 v2 branch 
get(Entity="MySIMDIntristicsLib", branch[(earliest) "archX86.v2~"]) 
returns "MySIMDIntristicsLib.v1~archX86.v2~win.v1" 

I (paket yönetim veya kaynak kodu yönetim yukarıdaki erişim semantik benzer güçlendirir beri) böyle bir şey zaten var sanıyorum.

Yukarıdaki En İyi/En erken erişim süresiyle birlikte bellek içi veri yapılarını arıyordum, ancak aynı zamanda iniş ekleme/çıkarma hızını da araştırıyordum.

Acımasız bir güç yaklaşımında, yukarıdaki sürümlerin her bir dalı için Min Max heap kullanılarak uygulanabileceğini düşünüyorum. Bununla birlikte, orada zaten daha iyi bir şey olabilir. Ben de, şeylerin bu tür Redisson her zamanki kaynak kontrol - ancak yukarıda DSL kendi inşaat yukarıda

için veri yapısının açık bir uygulama olup olmadığını görmedim, muhtemelen bazı delikler vardır Ayrıca, bu tür bir veri erişimi için daha iyi DSL'ler/API'ler varsa - öğrenmek de istersiniz.

cevap

0

Listeniz çok küçükse, en hızlı çözüm, istemediğiniz bir şeyi filtreleyerek, yalnızca sizin ölçütlerinizi karşılayanları filtreleyerek veya yalnızca sizin ölçütlerinizi karşılayan bir ilkeyi yakalar (örn. Yukarıdaki varlıkların üzerinde yineleyebilirsiniz). ters sırayla ve "en son" almak için ilk "archMIPS ~ fbsd" yakala.

listeniz sonra dizine eklemesini dalları/versiyonlarını isteyeceksiniz ve bunu bir bellek içi veri tabanını kullanarak yapabilirsiniz büyükse vb Cevabınız için

+0

Thx H2 Database Engine, HSQLDB, CQEngine olarak. Ancak, yukarıdaki sorun için, navigasyon rutinleri tarafından bellekte kullanılabilen, açıkça tasarlanmış veri yapısı arıyorum. –

+0

Doğru ve uygun dizinlere sahip ilişkisel veritabanı tablosu, yukarıdaki sorun için açıkça tasarlanmış bir veri yapısıdır. İyi şanslar. – mfulton26

İlgili konular