आप अपने समय सोच के बारे में map
multimap
बनाम बर्बाद कर रहे हैं। मान लीजिए कि डिब्बे की संख्या एन है और प्रति बिन की औसत संख्या एम
ए std::multimap<Key, Val>
आमतौर पर डुप्लिकेट कुंजी के साथ एक आरबी पेड़ का उपयोग करती है।
- लायें हे है (लॉग एन लॉग इन करें एम)
- सम्मिलित हे है
- हटाएं हे है (N + लॉग ऑन एम लॉग इन करें) (लॉग एन लॉग इन करें एम)
- पुनरावृत्ति हे है (1)
ए std::map<Key, std::vector<Val>>
आमतौर पर अद्वितीय कुंजी के साथ एक आरबी पेड़ का उपयोग करता है।
- लायें हे (लॉग एन)
- सम्मिलित हे (लॉग एन)
- हटाएं हे (लॉग एन)
- पुनरावृत्ति हे (1)
है आप के रूप में है है देख सकते हैं, अंतर तब तक बात करने लायक नहीं है जब तक एम बहुत बड़ा न हो।
हालांकि, दोनों का भंडारण रैम द्वारा सीमित है। 1 टीबी ज्यादातर सिस्टम के लिए संभव नहीं है, और कोई मदरबोर्ड मैंने इसका समर्थन करने के बारे में सुना है।
आप 1 टीबी डेटा के लिए डेटाबेस का उपयोग कर बेहतर हैं। आप इस कार्य के लिए लगभग किसी भी डेटाबेस का चयन कर सकते हैं। Kyoto Cabinet सरल है और आप क्या चाहते हैं करता है, लेकिन आप भी PostgreSQL, MySQL, SQLite, डायनमो, Redis, MongoDB, कैसेंड्रा, वोल्डेमॉर्ट ...
स्रोत
2013-02-18 08:29:13
आप दोनों को क्यों नहीं देखते हैं, और पता लगाते हैं? –
दरअसल, दोनों मामलों में आपके प्रदर्शन की डिस्क गति से प्रभुत्व होने की संभावना है, जब तक आपके पास 1TB रैम वाला सिस्टम न हो ... –
यदि आप कुंजी के रूप में 'const char *' का उपयोग करना चाहते हैं, तो आपको एक तुलना अनुमान भी प्रदान करना होगा इसके लिए काम करने के लिए। 'Std :: map 'का उपयोग करना आसान होगा। –