मेरे पास एक सूचना पुनर्प्राप्ति अनुप्रयोग है जो 10 मिलियन बिट्स के आदेश पर बिट एरे बनाता है। सरणी में "सेट" बिट्स की संख्या सभी स्पष्ट रूप से सभी सेट से व्यापक रूप से भिन्न होती है। वर्तमान में, मैं एक सीधी-आगे बिट सरणी (java.util.BitSet
) का उपयोग कर रहा हूं, इसलिए मेरे प्रत्येक बिट सरणी में कई मेगाबाइट लगते हैं।बिट सरणी के कुछ विकल्प क्या हैं?
मेरी योजना पहले एन बिट्स की कार्डिनालिटी को देखना है, फिर शेष के लिए डेटा संरचना का उपयोग करने के बारे में निर्णय लें। स्पष्ट रूप से कुछ डेटा संरचनाएं बहुत कम बिट एरे के लिए बेहतर होती हैं, और अन्य जब लगभग आधा बिट सेट होते हैं (जब अधिकांश बिट सेट होते हैं, तो मैं शून्य के एक स्पैस सेट के रूप में इसका इलाज करने के लिए अस्वीकृति का उपयोग कर सकता हूं)।
- प्रत्येक चरम पर कौन सी संरचनाएं अच्छी हो सकती हैं?
- क्या बीच में कोई है?
- बिट्स केवल एक बार सेट कर रहे हैं, और सूचकांक क्रम में:
यहाँ कुछ कमी या संकेत दिए हैं।
ओपन सोर्स जावा कार्यान्वयन के साथ कुछ उपयोगी है, लेकिन सख्ती से जरूरी नहीं है। मैं मौलिक सिद्धांतों में अधिक रुचि रखता हूं।
सुंदर समाधान देखें। यह भी तेज़ हो सकता है क्योंकि स्मृति लोड आज बहुत महंगा है। –